Patent Publication Number: US-8983788-B2

Title: System and method of measuring a sensor offset

Description:
TECHNICAL FIELD 
     The invention relates to a system and method of measuring a sensor offset. 
     BACKGROUND 
     Passenger and commercial vehicles include various components that need to be calibrated. A number of circumstances can cause a false calibration reading or prevent the vehicle from properly calibrating the component. Without proper calibration, the vehicle may not operate properly. For example, when a component cannot be properly calibrated, the vehicle may go into a fail mode or a “limp home” mode. Both modes greatly affect the driving experience. 
     SUMMARY 
     A method includes detecting a first event, executing a first procedure to identify a sensor offset in response to detecting the first event, and determining, via a computing device, whether the sensor offset was measured during the execution of the first procedure. The method further includes scheduling a second procedure to execute in response to detecting a second event if the sensor offset was not measured during the first procedure, and scheduling the first procedure to execute in response to detecting a subsequent occurrence of the first event if the sensor offset was measured during the first procedure. 
     A system includes a motor configured to rotate in response to a control signal, a sensor configured to measure an angular position of the motor, and a control processor configured to execute a first procedure to measure a sensor offset. The control processor is further configured to determine whether the sensor offset was measured during the execution of the first procedure, and schedule at least one of the first procedure and a second procedure to execute based on whether the sensor offset was measured during the first procedure. 
     Another system includes a motor configured to rotate in response to a control signal, a sensor configured to measure an angular position of the motor, and a control processor configured to execute a first procedure to measure a sensor offset in response to a first event, determine whether the sensor offset was measured during the execution of the first procedure, and schedule at least one of the first procedure and a second procedure to execute based on whether the sensor offset was measured during the first procedure. The control processor is further configured to schedule the first procedure to execute in response to the first event if the control processor was able to measure the sensor offset during the first procedure. Moreover, the control processor is configured to schedule the second procedure to execute in response to a second event if the control processor failed to measure the sensor offset. 
     The system and method provided herein are, for example, able to calibrate a vehicle component despite circumstances that may prevent the system from otherwise doing so. 
     The above features and advantages and other features and advantages of the present invention are readily apparent from the following detailed description of the best modes for carrying out the invention when taken in connection with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic diagram of a system implemented in a vehicle. 
         FIG. 2  is a flowchart of a process that may be implemented by the system of  FIG. 1 . 
         FIG. 3  is a flowchart of a first procedure that may be executed by the system of  FIG. 1 . 
         FIG. 4  is a flowchart of a second procedure that may be executed by the system of  FIG. 1 . 
         FIG. 5  is a flowchart of an out of range procedure that may be executed during the procedures of  FIGS. 3 and 4 . 
         FIG. 6  is a flowchart of a retry procedure that may be executed during the procedures of  FIGS. 3 and 4 . 
         FIG. 7  is a flowchart of another process that may be implemented by the system of  FIG. 1 . 
     
    
    
     DETAILED DESCRIPTION 
     A system is provided that is able to calibrate a vehicle component despite circumstances that may prevent the system from otherwise doing so. The system includes a motor configured to rotate in response to a control signal and a sensor configured to measure an angular position of the motor. A control processor is configured to execute a first procedure to measure a sensor offset. The sensor offset may be determined from the difference between the position of the motor identified by the sensor and the actual position of the motor. 
     Certain circumstances may prevent the control processor from measuring the sensor offset. Some of these circumstances include a low voltage provided to the sensor, a high rotation speed of the sensor, or a low phase current provided to the sensor. As such, the control processor may be further configured to determine whether the sensor offset was measured during the execution of the first procedure. If so, the control processor may schedule the first procedure to execute at the next key-off event. If not, the control processor may schedule a second procedure to execute in response to the next key-on event. If the control processor is still unable to measure the sensor offset, then the control processor may set a fault code and/or take other remedial actions. 
       FIG. 1  illustrates a system  100  that is able to calibrate a vehicle component despite circumstances that may cause false readings. The system  100  may take many different forms and include multiple and/or alternate components and facilities. While an example system  100  is shown in the Figures, the components illustrated in the Figures are not intended to be limiting. Indeed, additional or alternative components and/or implementations may be used. 
     The system  100  includes a motor  105 , a sensor  110 , and a control processor  115 . In one implementation, the system  100  may be used in a vehicle  120 , such as a passenger or commercial automobile. As such, the system  100  may be implemented in a hybrid electric vehicle including a plug-in hybrid electric vehicle (PHEV) or an extended range hybrid vehicle (EREV), a gas-powered vehicle, a battery electric vehicle (BEV), or the like. Of course, the system  100  may have other implementations besides use in a vehicle  120 . 
     The motor  105  may include any device configured to generate a torque from electrical energy. For instance, in a hybrid vehicle, the motor  105  may receive electrical energy from a power source (not shown), such as a battery, or from an engine (not shown), such as an internal combustion engine. The motor  105  may be controlled by a control signal that controls, for example, the speed and direction at which the motor  105  rotates. The motor  105  may be used for various purposes in the vehicle  120 . For instance, the motor  105  may be used to provide torque to a transmission (not shown) or to drive one or more clutch assemblies (not shown). As such, the vehicle  120  may have any number of motors  105 . Of course, each motor  105  may have additional or other purposes within the vehicle  120 . 
     The sensor  110  may include any device configured to measure the angular position of the motor  105 . For example, the sensor  110  may include a resolver or an encoder. In one particular implementation, the sensor  110  may be configured to generate and output a position signal that represents the angular position of the motor  105 . That is, the sensor  110  may measure the angular position of the motor  105  and output the position signal representative of the measured angular position. Any number of sensors  110  may be used. For instance, each motor  105  may have a corresponding sensor  110 . Under some circumstances, the sensor  110  may be offset relative to the motor  105 . That is, the signal output by the sensor  110  may not accurately represent the position of the motor  105 . 
     The control processor  115  may include any device configured to receive the position signal from the sensor  110  and determine the angular position of the motor  105  based on the position signal. Moreover, the control processor  115  may be further configured to generate one or more control signals to control the operation of the motor  105 . With the position signal and the control signals, the control processor  115  may be configured to measure the sensor offset. That is, the control processor  115  may be configured to determine a difference between the position measured by the sensor  110  and the actual position of the motor  105 . The control processor  115  may use a first procedure  300  (see  FIG. 3 ), a second procedure  400  (see  FIG. 4 ), or both, when determining the sensor offset. 
     In one particular approach, the control processor  115  may be configured to determine the sensor offset in response to detecting an event. For instance, the control processor  115  may be configured to detect a key-off event, a key-on event, or both. The key-off event may include any situation where the driver intends to turn the vehicle  120  off. For example, the key-off event may include the driver of the vehicle  120  turning the key of the vehicle  120  to the “off” position. The key-on event may include any situation where the driver intends to turn the vehicle  120  on. For instance, the key-on position may include the driver turning the key to the “on” or “Run/Crank” position. 
     The control processor  115  may be further configured to execute either the first or second procedure  300 ,  400  based on the type of the event detected. In one particular approach, the control processor  115  may be configured to execute the first procedure  300  in response to the key-off event and/or execute the second procedure  400  in response to the key-on event. As discussed above, certain circumstances may interfere with the ability of the control processor  115  to measure the sensor offset. Some of these circumstances include a low voltage provided to the sensor  110 , a high rotation speed of the motor  105 , or a low phase current provided to the sensor  110 . Under these and other circumstances, the control processor  115  may not be able to accurately measure the sensor offset. Accordingly, if the control processor  115  was not able to measure the sensor offset during the first procedure  300  executed at the key-off event, the control processor  115  may be configured to schedule the second procedure  400  to be executed at the next key-on event. 
     Once the sensor offset has been measured, the control processor  115  may be configured to determine whether the measured sensor offset is within a predetermined range. That is, the control processor  115  may be configured to compare the sensor offset to a predetermined range of acceptable sensor offsets. If the sensor offset indicates that the sensor  110  is operating outside the predetermined range, the control processor  115  may be configured to indicate that the sensor  110  has failed or that the measured sensor offset is unreliable, and that the vehicle  120  should be serviced. If, however, the control processor  115  determines that the sensor offset is within the predetermined range, the control processor  115  may accept the measured sensor offset as the offset value and store the offset value in a memory device (not shown). 
     The control processor  115  may further be configured to schedule the first procedure  300 , the second procedure  400 , or both, based on the measured sensor offset relative to the predetermined range. For instance, the control processor  115  may be configured to schedule the first procedure  300  to execute in response to a key-off event if the sensor offset is within the predetermined range. Additionally, the control processor  115  may be configured to schedule the second procedure  400  to execute in response to a key-on event if the sensor offset is outside the predetermined range. 
     If the control processor  115  is unable to measure the sensor offset, the control processor  115  may be configured to determine whether further attempts to measure the sensor offset should be made. For instance, the control processor  115  may be configured to count the number of previous attempts and compare the number of previous attempts to a predetermined limit of allowed attempts. If the number of previous attempts is below the predetermined limit, the control processor  115  may be configured to instruct the sensor  110  to make further attempts to measure the position of the motor  105 . If, however, the predetermined limit is met or exceeded, the control processor  115  may be configured to take a remedial action as discussed in greater detail below. 
     In addition to the number of attempts, the control processor  115  may include a timer configured to monitor an amount of time that has elapsed since the control processor  115  detected either the key-on or key-off event. Accordingly, the elapsed time may represent the amount of time taken by the control processor  115  to measure the sensor offset. The control processor  115  may be configured to compare the amount of time taken to measure the sensor offset to a predetermined value representing an allowed amount of time. If the amount of time measured is below the predetermined value, the control processor  115  may be configured to make further attempts to measure the sensor offset. If, however, the amount of time exceeds the predetermined value, the control processor  115  may be configured to stop attempting to measure the sensor offset and instead take a remedial action. The timer may be part of the control processor  115 , or alternatively, may be a separate computing device than the control processor  115 . 
     The control processor  115  may be configured to take various remedial actions if the control processor  115  is unable to measure the sensor offset. For instance, the control processor  115  may be configured to set a fault code. One example fault code may place the vehicle  120  into a “limp home” mode, which allows the vehicle  120  to operate at a reduced capacity, such as at slower speeds. Another example fault code may place the vehicle  120  into a “fail” mode, which indicates that the vehicle  120  is not drivable and must be serviced immediately. In any instance, setting the fault code may cause a warning light on the dashboard of the vehicle  120  to illuminate. The warning light may indicate to the driver of the vehicle  120  that service is needed as soon as possible. 
     In general, computing systems and/or devices, such as the control processor  115 , may employ any of a number of computer operating systems and generally include computer-executable instructions, where the instructions may be executable by one or more computing devices such as those listed above. Computer-executable instructions may be compiled or interpreted from computer programs created using a variety of well known programming languages and/or technologies, including, without limitation, and either alone or in combination, Java™, C, C++, Visual Basic, Java Script, Perl, etc. In general, a processor (e.g., a microprocessor) receives instructions, e.g., from a memory, a computer-readable medium, etc., and executes these instructions, thereby performing one or more processes, including one or more of the processes described herein. Such instructions and other data may be stored and transmitted using a variety of known computer-readable media. 
     A computer-readable medium (also referred to as a processor-readable medium) includes any non-transitory (e.g., tangible) medium that participates in providing data (e.g., instructions) that may be read by a computer (e.g., by a processor of a computer). Such a medium may take many forms, including, but not limited to, non-volatile media and volatile media. Non-volatile media may include, for example, optical or magnetic disks and other persistent memory. Volatile media may include, for example, dynamic random access memory (DRAM), which typically constitutes a main memory. Such instructions may be transmitted by one or more transmission media, including coaxial cables, copper wire and fiber optics, including the wires that comprise a system bus coupled to a processor of a computer. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read. 
       FIG. 2  illustrates a process  200  that may be implemented by the system  100  of  FIG. 1 . 
     At block  205 , the system  100  detects the key-off event. For instance, the control processor  115  may detect the key-off event. As discussed above, the key-off event may include any situation where the driver intends to shut the vehicle  120  off. For instance, the driver of the vehicle  120  may turn the key to the “off” position. 
     At block  210 , the system  100  executes the first procedure  300 . In one particular approach, the control processor  115  executes the first procedure  300  in response to detecting the key-off event. An example first procedure  300  is discussed in greater detail below with respect to  FIG. 3 . 
     At decision block  215 , the system  100  determines whether the sensor offset was measured during the first procedure  300 . For instance, the control processor  115  may determine whether it was able to identify the sensor offset. If so, the process  200  may continue at block  220 . If not, the process  200  may continue at block  225 . 
     At block  220 , the system  100  may schedule the first procedure  300  to execute in response to detecting a subsequent occurrence of the key-off event. For example, the control processor  115  may schedule the first procedure  300  to execute the next time the driver turns the key to the “off” position. 
     At block  225 , the system  100  may schedule the second procedure  400  to execute in response to detecting the key-on event. For instance, the control processor  115  may schedule the second procedure  400  to execute the next time the driver turns the key to the “on” position. The second procedure  400  is discussed below in greater detail with respect to  FIG. 4 . 
       FIG. 3  is a flowchart of an example first procedure  300  that may be implemented by the system  100  of  FIG. 1 . 
     At block  305 , the system  100  detects the key-off event. For instance, the control processor  115  may determine that the driver turning the key to the “off” position is the key-off event. This way, the first procedure  300  may be executed in response to the key-off event. 
     At block  310 , the system  100  starts a timer. The timer may be used to count the amount of time that has elapsed since detecting the key-off event. The timer may be implemented by the control processor  115 , or alternatively, may be implemented as a separate computing device (not shown). 
     At block  315 , the system  100  may measure the sensor offset. That is, in one implementation, the control processor  115  may determine that the sensor offset is the difference between the position of the motor  105  indicated by the sensor  110  via the position signal and the position of the motor  105  indicated by the control signal. 
     At decision block  320 , the system  100  may determine whether the sensor offset was measured. For example, as discussed above, certain circumstances may interfere with the ability of the control processor  115  to measure the sensor offset. For instance, a low voltage provided to the sensor  110 , a high rotation speed of the motor  105 , or a low phase current provided to the sensor  110  may prevent the control processor  115  from measuring the sensor offset. Accordingly, the control processor  115  may determine whether it was able to successfully measure the sensor offset at block  315 . If the control processor  115  was able to measure the sensor offset, the process  300  may continue at decision block  325 . If the control processor  115  was unable to measure the sensor offset, the process  300  may continue at decision block  335 . 
     At decision block  325 , the system  100  may determine whether the sensor offset is out of range. That is, the control processor  115  may compare the measured sensor offset to a predetermined range of acceptable sensor offsets. One possible procedure for determining whether the sensor offset is within the predetermined range is illustrated in  FIG. 5 . If the control processor  115  determines that the sensor offset is within the predetermined range, the process  300  continues at block  330 . If the control processor  115  determines that the sensor offset is outside the predetermined range, the process  300  continues at decision block  335 . 
     At block  330 , the system  100  may set the sensor offset to the measured value. In one particular approach, the control processor  115  may store the measured sensor offset as a value in a memory device (not shown). The control processor  115  may further clear the timer that was started at block  310 . 
     At decision block  335 , the system  100  may determine whether to continue to attempt to measure the sensor offset. For instance, the control processor  115  may use the number of previous attempts and the elapsed time to determine whether to continue to attempt to determine the sensor offset. One possible procedure for determining whether to continue to attempt to determine the sensor offset is illustrated in  FIG. 6 . If the control processor  115  determines that it should continue to attempt to measure the sensor offset, the process  300  may continue at block  315 . If, however, the control processor  115  determines that it should not continue to attempt to measure the sensor offset, the process  300  may continue at block  340 . 
     At block  340 , the system  100  may set a key-on flag. In one particular approach, the control processor  115  may set the key-on flag, which may indicate that the second procedure  400  should be executed at the next key-on event. The second procedure  400  is discussed in greater detail below with respect to  FIG. 4 . 
       FIG. 4  illustrates a flowchart of an example first procedure  400  that may be implemented by the system  100  of  FIG. 1 . 
     At block  405 , the system  100  may detect the event, such as the key-on event. For instance, the control processor  115  may be configured to identify an instance where the driver turns the key to the “on” position and interpret such instance as the key-on event. Therefore, contrary to the first procedure  300 , which is executed in response to the key-off event, the second procedure  400  may be executed in response to the key-on event. 
     At block  410 , the system  100  may start the timer. The timer may be used to count the amount of time that has elapsed since detecting the event. The timer may be part of the control processor  115 , or alternatively, may be implemented as a separate computing device (not shown). 
     At block  415 , the system  100  may measure the sensor offset. That is, in one particular approach, the control processor  115  may identify the sensor offset as the difference between the position of the motor  105  indicated by the sensor  110  via the position signal and the position of the motor  105  indicated by the control signal. 
     At decision block  420 , the system  100  may determine whether the sensor offset was measured. For instance, certain circumstances may interfere with the ability of the control processor  115  to measure the sensor offset. Indeed, the second procedure  400  may be executed because the control processor  115  was unable to measure the sensor offset during the execution of the first procedure  300 . Accordingly, the control processor  115  may determine whether it was able to successfully measure the sensor offset at block  415 . If the control processor  115  is able to measure the sensor offset, the process  400  may continue at decision block  425 . If not, the process  400  may continue at decision block  440 . 
     At decision block  425 , the system  100  may determine whether the sensor offset is out of range. That is, the control processor  115  may compare the measured sensor offset to a predetermined range of acceptable sensor offsets. One example procedure for determining whether the sensor offset is within the predetermined range is illustrated in  FIG. 5 . If the control processor  115  determines that the sensor offset is within the predetermined range, the process  400  may continue at block  430 . If not, the process  400  may continue at decision block  440 . 
     At block  430 , the system  100  may set the sensor offset to the measured value. In one particular approach, the control processor  115  may store the measured sensor offset as a value in a memory device (not shown). The control processor  115  may further clear the timer that was started at block  410 . 
     At block  435 , the system  100  may set a key-off flag. For instance, the control processor  115  may set the key-off flag, which may indicate that the first procedure  300  should be executed in response to the key-off event. The first procedure  300  was discussed in greater detail above with respect to  FIG. 3 . 
     At decision block  440 , the system  100  may determine whether to continue to attempt to measure the sensor offset. For instance, the control processor  115  may use the number of previous attempts and the elapsed time to determine whether to continue to attempt to determine the sensor offset. One example procedure to determine whether to continue to attempt to determine the sensor offset is illustrated in  FIG. 6 , below. If the control processor  115  determines that further attempts are warranted, the process  400  may continue at block  415 . If, however, the control processor  115  determines that it should not continue to attempt to measure the sensor offset, the process  400  may continue at block  445 . 
     At block  445 , the system  100  may set a fault code or take some other remedial action. In one possible approach, the control processor  115  may set the fault code. One example fault code may place the vehicle  120  into a “limp home” mode, which allows the vehicle  120  to operate at a reduced capacity, such as at slower speeds. Another example fault code may place the vehicle  120  into a “fail” mode, which indicates that the vehicle  120  is not drivable and must be serviced immediately. In any instance, setting the fault code may cause a warning light on the dashboard (not shown) of the vehicle  120  to illuminate. The warning light may indicate to the driver that service is needed as soon as possible. 
     At block  450 , the system  100  may use a previously measured sensor offset as the current sensor offset. For instance, the control processor  115  may access a memory device for the previously calculated sensor offset to use until a new sensor offset can be measured. 
       FIG. 5  is a flowchart of an example process  500  that may be implemented by the system  100  to determine whether the system  100  offset is out of a particular range. 
     At block  505 , the system  100  may receive the sensor offset value determined by, for example, the control processor  115  at block  315  of  FIG. 3  or at block  415  of  FIG. 4 . 
     At decision block  510 , the system  100  may determine whether the received sensor offset value is within the predefined range of acceptable sensor offset values. That is, the control processor  115  may compare the received sensor offset value and compare the received sensor offset value with the predetermined range of acceptable sensor offset values. If the received sensor offset value is within the predetermined range, the process  500  may continue at block  515 . If the received sensor offset value is outside the predetermined range, the process  500  may continue at block  520 . 
     At block  515 , the system  100  may direct the process  500  to continue with either the first or second procedure  300 ,  400  so that the received sensor offset value can be set as the sensor offset. As such, block  515  may cause the process  500  to go to block  330  of  FIG. 3  or at block  430  of  FIG. 4 . 
     At block  520 , the system  100  may direct the process  500  to continue with either the first or second procedure  300 ,  400  so that the system  100  can determine whether to continue to make further attempts to determine the sensor offset. For instance, block  520  may cause the process  500  to go to block  335  of  FIG. 3  or block  440  of  FIG. 4 . 
       FIG. 6  illustrates an exemplary process  600  of determining whether to make further attempts to measure the sensor offset. For instance, the process  600  may be used following a failed attempt to measure the sensor offset, as indicated in the first or second procedure  300 ,  400 . 
     At block  605 , the system  100  may determine the number of previous attempts. For instance, the control processor  115  may count the number of previous attempts and store the number of previous attempts in a memory device. 
     At decision block  610 , the system  100  may determine whether additional attempts may be made. For instance, the control processor  115  may compare the number of previous attempts to the predetermined number of allowed attempts. If the number of previous attempts is below the predetermined number of allowed attempts, the process  600  may continue at block  615 . If, however, the number of previous attempts is at or above the predetermined number of allowed attempts, the process  600  may continue at block  630 . 
     At block  615 , the system  100  may check the timer. For instance, the control processor  115  may determine the amount of time that has elapsed during the first or second procedure  300 ,  400  by checking the timer started at block  310  of  FIG. 3  or block  410  of  FIG. 4 . 
     At decision block  620 , the system  100  may determine whether the predetermined amount of time has elapsed. For instance, the control processor  115  may compare the amount of time that has elapsed (i.e., the amount of time recorded by the timer) to the predetermined amount of time allowed. If the elapsed time is below the predetermined amount of time allowed, the process  600  may continue at block  625 . If, however, the elapsed time is at or greater than the predetermined amount of allowed time, the process  600  may continue at block  630 . 
     At block  625 , the system  100  may determine that further attempts to measure the sensor offset are permitted. For instance, the control processor  115  may determine that further attempts are permitted and continue the first procedure  300  at block  315  of  FIG. 3  or the second procedure  400  at block  415  of  FIG. 4 . 
     At block  630 , the system  100  may clear the number of previous attempts. For example, the control processor  115  may clear the number of previous attempts from the memory device so that subsequent attempts to measure the sensor offset will not count toward the predetermined number of allowed attempts. 
     At block  635 , the system  100  may clear the timer. For instance, the control processor  115  may clear the timer so that the elapsed time to measure the sensor offset during the first or second procedure  300 ,  400  will not count toward the predetermined amount of time allowed. 
     At block  640 , the system  100  may direct the process  600  to continue with the first procedure  300  at block  340  of  FIG. 3  or at block  445  of  FIG. 4 . 
       FIG. 7  illustrates another sample process  700  that may be implemented by the system  100  of  FIG. 1 . For instance, the process  700  may be implemented as an alternative to the first and second procedure  400 s. 
     At block  705 , the system  100  may detect an event. For instance, the control processor  115  may detect either the key-off event or the key-on event. 
     At block  710 , the system  100  may start the timer. For instance, the control processor  115  may start the timer to count the amount of time that has elapsed since detecting the event. As discussed in  FIG. 6 , the elapsed time may be used to determine whether to make further attempts to measure the sensor offset. The timer may be part of the control processor  115 , or alternatively, may be implemented as a separate computing device (not shown). 
     At block  715 , the system  100  may measure the sensor offset. In one particular approach, the control processor  115  may identify the sensor offset as the difference between the position of the motor  105  indicated by the sensor  110  via the position signal and the position of the motor  105  indicated by the control signal. 
     At decision block  720 , the system  100  may determine whether the sensor offset was measured. As previously discussed, several circumstances may interfere with the ability of the control processor  115  to measure the sensor offset. Accordingly, the control processor  115  may determine whether it was able to successfully measure the sensor offset at block  715 . If the control processor  115  is able to measure the sensor offset, the process  700  may continue at decision block  725 . If the control processor  115  fails to measure the sensor offset, the process  700  may continue at decision block  740 . 
     At decision block  725 , the system  100  may determine whether the measured sensor offset is out of range. That is, the control processor  115  may compare the measured sensor offset to a predetermined range of acceptable sensor offsets. One example procedure for determining whether the sensor offset is within the predetermined range is discussed above with respect to  FIG. 5 . If the control processor  115  determines that the sensor offset is within the predetermined range, the process  700  may continue at block  730 . If not, the process  700  may continue at decision block  740 . 
     At block  730 , the system  100  may set the sensor offset to the measured value. In one particular approach, the control processor  115  may store the measured sensor offset as a value in a memory device (not shown). The control processor  115  may further clear the timer that was started at block  710 . 
     At block  735 , the system  100  may set the key-off flag. That is, the control processor  115  may set the key-off flag that schedules the process  700  to begin again at the next key-off event. 
     At block  740 , the system  100  may determine whether to make further attempts to measure the sensor offset. For instance, the control processor  115  may use the process  600  described with reference to  FIG. 6  to determine whether further attempts to measure the sensor offset should be made. If so, the process  700  may continue at block  715 . If not, the process  700  may continue at decision block  745 . 
     At decision block  745 , the system  100  may determine what type of event triggered the process  700 . For instance, the control processor  115  may determine whether a key-off event or a key-on event triggered the process  700  to begin. If a key-off event, the process  700  may continue at block  750 . If a key-on event triggered the process  700 , the process  700  may continue at block  755 . 
     At decision block  750 , the system  100  may set the key-on flag. That is, the control processor  115  may set the key-on flag, which schedules the process  700  to begin again at the next key-on event. 
     At decision block  755 , the system  100  may set a fault code or take some other remedial action. In one possible approach, the control processor  115  may set the fault code. One example fault code may place the vehicle  120  into a “limp home” mode, which allows the vehicle  120  to operate at a reduced capacity, such as at slower speeds. Another example fault code may place the vehicle  120  into a “fail” mode, which indicates that the vehicle  120  is not drivable and must be serviced immediately. In any instance, setting the fault code may cause a warning light on the dashboard of the vehicle  120  to illuminate. The warning light may indicate to the driver that service is needed as soon as possible. 
     At block  760 , the system  100  may use a previously measured sensor offset as the current sensor offset. For instance, the control processor  115  may access a memory device for the previously calculated sensor offset to use until a new sensor offset can be measured. 
     While the best modes for carrying out the invention have been described in detail, those familiar with the art to which this invention relates will recognize various alternative designs and embodiments for practicing the invention within the scope of the appended claims.