Patent Publication Number: US-6219624-B1

Title: Synchronous timer vehicle speed measurement

Description:
TECHNICAL FIELD 
     This invention relates to vehicle speed measurement and, more particularly, to a method of vehicle speed measurement that provides an improved response to slow speeds and loss of speed signal. 
     BACKGROUND OF THE INVENTION 
     Instrument clusters used in automobiles commonly use microprocessors to measure the vehicle speed signal and display the speed on an air-core gauge. Two common measurement techniques are used in the prior art. One, a pulse period measurement technique uses a high-resolution timer to store the time when each speed pulse edge occurs. The pulse period is the difference in 2 consecutive values. The high-resolution timer typical in current instrument clusters are 16-bits with a 2 microsecond resolution. The maximum period that can be measured without considering overflows is: 
     
       
         Max Period=$10000*2 usec=131.072 milliseconds  
       
     
     If overflows are considered, then the period is a relationship between the time difference and the number of overflows accumulated. An overflow is a count of how many times the timer has overflowed from $FFFF to $0000. Using an overflow counter allows longer pulse periods to be measured. Pulse period measurement has the advantages of high measurement accuracy and fast response, but exhibits a “steppy” response at low speeds and a perceived pause upon signal loss. 
     A second measurement technique counts the number of pulses per time interval. A timer provides a time base for counting speed pulses. Each speed pulse count is placed into a finite length buffer and periodically summed yielding a frequency. This frequency is then converted to vehicle speed. While this technique produces a smooth response over the entire range, the resolution of this method requires extensive filtering to achieve acceptable values, severely affecting the response. 
     SUMMARY OF THE INVENTION 
     The present invention combines the benefits of both the aforementioned methods while eliminating the disadvantages. The present invention provides accurate speed measurement, fast response, improved low speed response, and quick response to loss of signal. According to the present invention an input capture timer interrupt responds to the rising edge of the speed signal and is used to synchronize an output compare timer interrupt that is scheduled to occur at a fixed time interval (every 2.048 milliseconds). Each time an input capture interrupt occurs a new measurement period is started. Each time the output compare interrupt occurs, a time of 2.048 milliseconds is added to a current speed period value. On the next speed signal interrupt, the difference between the captured time and the time that the last output compare interrupt occurred is calculated. This difference is then added to the current speed period value to obtain the period measurement. Each period measurement is input to a multistage speed buffer. If the period measurement reaches a threshold then a maximum period value is input to the buffer. The speed buffer is updated using the 2.048 millisecond interrupt and prevents the long delays associated with using timer overflows. The filtering used to calculate the speed is therefore not executing on ‘static’ data. This prevents the pause or hitch seen in the prior art pulse period measurement techniques when the signal is removed. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A more complete understanding of the present invention may be had from the following detailed description which should be read in conjunction with the drawings in which: 
     FIG. 1 shows the vehicle environment in which the present invention is used; 
     FIG. 2 is a block diagram of the invention; 
     FIG. 3 shows a waveform helpful in understanding the measurement method of the present invention; 
     FIG. 4 is an overall flowchart of the invention; 
     FIG. 5 is a detailed flowchart of the input capture interrupt service routine; 
     FIG. 6 is a detailed flowchart of the output compare timer interrupt service routine; 
     FIG. 7 is a flowchart of the background speed calculation using the speed measurement method of the present invention to drive an air core gauge. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENT 
     Referring now to the drawings and initially to FIG. 1, a vehicle indicated at  10  includes a speed measurement system generally designated  12 . The system  12  includes a microcomputer  14  that controls a speed display  16  in response to a signal VS from a speed sensor  18  magnetically coupled to the vehicle transmission  20 . As shown in FIG. 2, multi-toothed gear  22  is driven by transmission  20  and rotates at a speed directly related to vehicle speed. The gap between vehicle speed sensor  18  and gear  22  increases and decreases as each tooth  22  passes by sensor  18 . This rotation generates an electric current in the speed sensor which is filtered and buffered in a conventional manner by input signal conditioning circuitry  26  to produce speed signal VS, a periodic signal having a period that is inversely related to the speed of the vehicle. Microcomputer  14  generates a display control signal DCS responsive to VS for displaying the vehicle speed on display  16 . The display  16  is preferably an air-core meter driven by air-core meter driver  28 , such as Signetics Linear Products SA5775, that interfaces with microcomputer  14  through a serial bus. 
     The speed input period is the time interval between two successive positive edges of the signal VS. These edges are shown as Edge #1 and Edge #2 in FIG.  3 . In the microcomputer  14 , a 16 bit free running timer, that is incremented every 2 microseconds, is used as a time base to capture the time of Edge #1 and Edge #2. Each edge starts a new speed measurement period and initiate an input capture routine that captures and stores the time of the edge as a first variable SPD and resets a 2.048 msec retriggerable timer. Each time the retriggerable timer expires an output compare routine is executed that adds 2.048 msec to a current speed measurement period Speed [0] and stores the time of the last output compare interrupt as a second variable SPD2. The running time measurement of the current pulse is checked for long pulse widths or no signal. Edge #2 ends the measurement of the current pulse width or period. Vehicle speed is inversely related to the period. 
     
       
         Vehicle Speed (mph)=3600 seconds/(Pulses Per Mile*Speed Input Period)  
       
     
     The pulse width or period is calculated as: 
     
       
         Pulse Width=Speed [0]+Remainder  
       
     
     When Edge #2 occurs the free running timer value is captured and the remainder is calculated as: 
     
       
         Remainder=SPD−SPD2  
       
     
     Referring now to FIG. 4, a flowchart of the speed measurement routine is shown. At block  40 , all registers used for speed period measurement are initialized and a restart measurement period flag is set. The speed signal VS is checked at block  42  for a rising edge and upon detection thereof, an input capture interrupt routine is executed as indicated at block  44  and described in detail in FIG.  5 . This routine stores the time value SPD in computer memory. The time stored is the value of a high resolution  16  bit free running timer when the edge occurred. This routine also resets a retriggerable timer, keeps track of the time since the last edge, and calculates the remainder when necessary. Between rising edges of the speed signal, the expiration of the retriggerable timer is checked at block  46 . If the timer has expired an output compare timer interrupt service routine is executed at block  48  that resets a pulse measurement period restart flag if the accumulated time since the last edge exceeds a maximum period as will be discussed in connection with FIG.  6 . If the retriggerable timer has not expired a check is made at block  50  to determine if it is time to update the speed display and if so this routine is performed at block  52  as will be further discussed in connection with FIG.  7 . Otherwise, and in any event after display update, the monitoring of the speed signal for a rising edge continues at block  42 . 
     Referring now to FIG. 5, a flowchart of the input capture interrupt routine is shown. The time of the occurrence of a rising edge of the speed signal is captured at block  60 , by reading the value SPD of the free running timer and storing the value in computer memory. At block  62 , the time of the free running timer OC that corresponds to the last output compare interrupt occurred is stored in computer memory as SPD2 for use in calculating the remainder shown in FIG.  3 . At block  64 , the 2.048 millisecond retriggerable timer is reset and OC is incremented by 2.048 msec. At block  66 , the restart measurement period flag is checked. If the flag is set, as is the case the first time through this loop, the flag is reset at block  68 . Each time the retriggerable timer interval expires as mentioned in connection with FIG. 3, the output compare routine of FIG. 6 is executed as indicated in block  48 . 
     Referring now to FIG. 6, the output compare timer interrupt service routine, when entered, resets the retriggerable timer, at block  70 , and increases the value of OC by 2.048 msec. At block  72 , a current speed period measurement register SPEED[0], is incremented by 2.084 msec. If SPEED[0] is &gt;=a predetermined maximum speed period, i.e., indicative of a below minimum vehicle speed, as determined by block  74 , then a value of 262.144 msec, corresponding to that speed, is entered in buffer register SPEED[1] as indicated in block  76 . SPEED[0] is then cleared at block  78  and the restart pulse measurement flag is set at block  80 . Otherwise, if the current pulse measurement is less that the maximum speed period, the program falls though the loop formed by the blocks  42 ,  46  and  50  until the retriggerable timer expires as detected at block  46 . At that point, the output compare timer routine is called to increment register SPEED[0] by 2.048 msec. This incrementing of SPEED[0] continues until the time exceeds 262.144 or a rising edge is detected at block  42 . When a rising edge is detected, the service routine of FIG. 5 is reentered and since the restart measurement flag is reset, the decision made at block  66  calls for the calculation of the remainder or difference between the time of the rising edge SPD and the time of the last output compare interrupt SPD2 as indicated in block  82 . This difference is then added to the value in SPEED[0] at block  84  and the sum is shifted into register SPEED[1] causing the oldest speed pulse measurement to be shifted out of the buffer as indicated in block  86 . The SPEED[0] register is then cleared at block  88  to prepare for the next pulse measurement period. 
     Vehicle speed is calculated using a background task and is normally scheduled at predetermined intervals which may be between 25 to 50 milliseconds depending on the application. When the predetermined interval has passed as determined by block  50 , the speed update routine of FIG. 7 is entered. All values in the speed buffer are summed at block  90  and an average speed value is obtained from the sum. At block  92 , this average value is converted to a pointer count value suitable for display on an air-core gauge, using a linear approximation approach. The pointer count value is low pass filtered at block  94  and clamped at a maximum display position at block  96 . An offset value is added at block  98  to compensate for manufacturing errors and non-linearities in the gauge are compensated for in block  100 . At block  102  the value is low pass filtered and sent to the air core gauge as indicated in block  104 . 
     While the best mode for carrying out the present invention has 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 as defined by the following claims.