Abstract:
A method of generating a crankshaft synchronized sine wave signal for an internal combustion engine is provided. The method includes the steps of: A) sensing an observed crankshaft angle of the crankshaft; B) using a dynamic observer to generate an estimated crankshaft angle from said observed crankshaft angle; and C) generating the crankshaft synchronized sine wave signal as a function of the estimated crankshaft angle. The crankshaft synchronized sine wave signal is preferable output to at least one of an active vibration control system and an active noise control system. An apparatus for generating a crankshaft synchronized sine wave for an internal combustion engine according to the method of the present invention is also disclosed.

Description:
TECHNICAL FIELD 
     The present invention relates to a method and apparatus for generating a crankshaft synchronized sine wave for use with active noise and vibration control systems in conjunction with internal combustion engines. 
     BACKGROUND OF THE INVENTION 
     Active noise control and active vibration control systems are employed to reduce noise and vibrations induced by internal combustion engines of vehicles. Active noise control systems utilize speakers and microphones to cancel sound emitted from the engine, which has a frequency that is synchronized with the rotational speed of the crankshaft. Active vibration control systems utilize active actuators, such as active engine mounts, to cancel engine induced vibrations, which also have a frequency synchronized with the rotational speed of the crankshaft. Therefore, the effectiveness of an active noise control and active vibration control system depends on an accurate crank angle signal. 
     Many modern engines have a crankshaft position sensor operable to provide a crank pulse indicating crank angle. The crank pulse usually lacks the resolution sufficient for active noise and vibration control. Therefore, the crank pulse must be processed or conditioned to generate precise crank angle values for use with active noise and vibration control systems. 
     Some engine manufacturers have developed AFM (Active Fuel Management, formerly called Displacement on Demand) systems to improve the fuel economy of internal combustion engines. An AFM engine operates in a normal mode (all cylinders are turned on) when power above a predetermined threshold is required and in an AFM mode (half of the cylinders are turned off) when power requirement is reduced. To generate the same level of driving torque with a reduced number of active cylinders, AFM mode produces a higher level of firing force, as a result of increased in-cylinder pressures, for each active cylinder. This higher firing force induces higher torque variations, which produce higher level of structural vibrations degrading noise and vibration, or N&amp;V, performance. In addition, the AFM mode firing frequency reduces to half of the normal mode firing frequency, resulting in more excitation to structurally sensitive frequency ranges. Therefore, conventional passive approaches of vibration suppression may not meet the N&amp;V requirement for both AFM mode and normal mode of engine operation. Engine induced N&amp;V issues also arise in engines with high torque pulses including diesel and homogeneous charge compression ignition, or HCCI, engines. One possible solution to suppress the engine induced vibration is to apply active vibration control technology using smart actuators such as active engine mounts. 
     There are several types of semi-active and active actuators that can be used for engine vibration suppression. An example of a semi-active actuator is a switchable engine mount whose damping characteristic may be electronically switched between soft and stiff by using electro-hydraulic or magneto rheological (MR) technology. With semi-active actuators, the vibration sensitivity may be switched as operating frequency changes, but may not completely cancel the engine vibration. Active actuators, on the other hand, produce force and/or displacement to counteract engine induced vibration. One type of active actuator is the Active Tuned Absorber (ATA), which utilizes inertial force within the actuator. Another type of active actuator is the Active Engine Mount (AEM). The AEM can generate displacement to counteract engine vibration and at the same time support the static load of the engine. 
     SUMMARY OF THE INVENTION 
     A method of generating a crankshaft synchronized sine wave signal for an internal combustion engine is provided. The method includes the steps of: A) sensing an observed crankshaft angle of the crankshaft; B) using a dynamic observer to generate an estimated crankshaft angle from the observed crankshaft angle; and C) generating the crankshaft synchronized sine wave signal as a function of the estimated crankshaft angle. 
     The method may further include the step of communicating the crankshaft synchronized sine wave signal to at least one of an active noise control system and an active vibration control system. The method may also include generating an estimated crankshaft rotational frequency using the dynamic observer. The crankshaft synchronized sine wave signal may be generated by determining at least one of the sine and cosine of the estimated crankshaft angle multiplied by an order value, while the frequency of the crankshaft synchronized sine wave signal may be generated by multiplying the estimated crankshaft rotational frequency by an order value. 
     An apparatus for generating a crankshaft synchronized sine wave for an internal combustion engine, having a crankshaft rotatably disposed therein, is also provided. The apparatus includes a sensor operable to sense the angular position of the crankshaft and communicate an observed crankshaft angle value and a controller operable to receive the observed crankshaft angle value. A dynamic observer is provided in communication with the controller and is sufficiently configured to generate an estimated crankshaft angle from the observed crankshaft angle value. The controller is preferably configured to determine the crankshaft synchronized sine wave as a function of the estimated crankshaft angle, and to communicate the crankshaft synchronized sine wave to at least one of an active vibration control system and an active noise control system. 
     The dynamic observer may include at least one integrator module operable to generate at least one of an estimated crankshaft speed and the estimated crankshaft angle. Further, the dynamic observer may include a revolution pulse generation module operable to reset the estimated crankshaft angle once per revolution of the crankshaft. In one embodiment, the dynamic observer may be configured to determine an error value by subtracting the estimated crankshaft angle from the observed crankshaft angle. In this embodiment the dynamic observer may include a quantization module operable to quantize the estimated crankshaft angle prior to subtracting the estimated crankshaft angle from the observed crankshaft angle and a dead band operator module operable to account for a predetermined amount of error in the error value. 
     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 illustration of an engine incorporating a controller having a dynamic observer operable to provide control signals to an active engine mount system and an active noise cancellation system; 
         FIG. 2  is a schematic illustration of a crankshaft pulse counter; 
         FIG. 3  is a schematic illustration of a software implementation of a crankshaft pulse counter; 
         FIG. 4  is a schematic representation of the dynamic observer, shown in  FIG. 1 ; and 
         FIG. 5  is a graphical illustration of a first order reference cosine of an engine operating at 600 RPM illustrating a control system with and without a dynamic observer. 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring to  FIG. 1 , there is shown a portion of a vehicle  10  having an internal combustion engine  12  mounted to a frame member  14 . The frame member  14  is supported by a suspension system  16 . Those skilled in the art will recognize that the suspension system  16  may include such components as springs, shock absorbers, tires, etc., which are not shown for purposes of clarity. The internal combustion engine includes an engine block  18  configured to rotatably support a crankshaft  20 . The crankshaft  20  has a target wheel  22  mounted thereon for unitary rotation therewith. A sensor  24  is located substantially adjacent to the target wheel  22 , and operates to provide an observed crankshaft angle value to a controller  26 . 
     In the preferred embodiment, the internal combustion engine  12  will be a variable displacement engine, or operate in an active fuel management (AFM) mode of operation. Those skilled in the art will recognize that an AFM mode of operation refers to the disabling of half of the cylinders, not shown, of the internal combustion engine  12  during operating modes where the required power of the internal combustion engine  12  is operating below a predetermined value. That is, an internal combustion engine  12  having eight cylinders may disable four of the cylinders when the vehicle  10  is operating in a low engine load requirement mode of operation, such as a steady state highway driving schedule. Similarly, a six cylinder internal combustion engine  12  may disable three of the cylinders when the vehicle  10  is operating in a low engine load requirement mode of operation. 
     The internal combustion engine  12  is supported on the frame member  14  by an active vibration control system, such as active engine mounts  28 . The active engine mounts  28  operate to cancel the vibrations imparted to the frame member  14  by the internal combustion engine  12 . The controller  26  operates to provide a control signal to the active engine mounts  28 . An active noise control system  30  receives control signals from the controller  26  and operates to cancel objectionable sound emitted from the internal combustion engine  12 . The active noise control system includes a microphone  32 , for sensing sound and communicating the sound signal to the controller  26  for processing, and a speaker  34 , for outputting the waveform operable to cancel the sound emitted from the internal combustion engine  12 . The controller  26  includes a dynamic observer  36  operable to process or condition the crankshaft angle signal provided to the controller  26  by the sensor  24  for subsequent communication to the active engine mounts  28  and the active noise control system  30 . The construction and operation of the dynamic observer  36  will be discussed in greater detail hereinbelow. 
     Engine induced vibrations are synchronized with engine cycle and hence with crankshaft angle. For example, the active fuel management mode of a V6 internal combustion engine generates a vibration whose frequency is 1.5 times faster than crankshaft revolution frequency. Since the crankshaft frequency changes and the engine vibration is a function of crankshaft angle, it is more convenient to use order instead of frequency. Frequency is the number of oscillations per second, while order is the number of oscillations per one crankshaft revolution. Therefore, the active fuel management mode of a V6 engine has 1.5 th  order vibration. Similarly, the active fuel management mode of a V8 engine has 2 nd  order vibration. 
     The main idea of vibration suppression using active engine mounts  28  is to generate a counter vibration to cancel the vibration produced by the internal combustion engine  12 . Since the vibration of the internal combustion engine is synchronized with the angel of the crankshaft  20 , the counter vibration also should be synchronized with the crankshaft angle. The engine generates p th  order displacement z e =α o  cos(pθ)+β o  sin(pθ), where the magnitude and phase are determined by the unknown parameters α o  and β o . Driven by the controller  26 , the active engine mounts  28  generates p th  order displacement z m =α(pθ)+β(pθ), where the magnitude and phase are determined by the control parameters α and β. The control objective is to cancel p th  order displacement z f =z e −z m  of the frame member  14 . The ideal control parameters are α=α o  and β=β o . However, the parameters α o  and β o  are unknown and the control algorithm is designed to find parameters α o  and β o . Therefore, the control algorithm needs order reference sine and cosine from the crankshaft angle. 
     To implement the control algorithm, unit cosine and sine synchronized with order multiple of crankshaft revolution is required. To obtain the order reference, the crankshaft angle must be measured in real time. Many currently produced internal combustion engines  12  provide a crankshaft pulse every six degrees of crankshaft angle, thereby providing sixty pulses per crankshaft revolution. However, typically there are two missing pulses every revolution indicating starting angle; consequently, there are only fifty eight pulses per crankshaft revolution, not sixty. The period of fifty eight teeth starting from any pulse is equal to one crankshaft revolution period. Once the crankshaft angle is determined, the order reference cosine and sine may be generated. Having order references, the control parameters α and β can be determined either by closed-loop control or by open-loop control. 
     The frequencies of the firing induced vibrations of the internal combustion engine  12  are order multiples of crankshaft revolution. As stated hereinabove, order is defined as the number of oscillations per one crankshaft revolution, while the frequency is number of oscillations per second. Since the rotational speed of the crankshaft  20  (engine rpm) changes during operation, it is more convenient to use order as the frequency reference rather than absolute frequency. For example, the primary vibration frequency of a V6 engine is 3 rd  order, which means the frequency is exactly three times the crankshaft revolution frequency. For a V6 engine operating in an active fuel management mode of operation with one bank of three cylinders disabled, the primary vibration frequency is 1.5 th  order. Similarly, for a V8 engine, the primary vibration frequency is 4 th  order and the primary vibration frequency of a V8 engine operating in an active fuel management mode of operation, having four cylinders disabled, is 2 nd  order. 
     In addition to the order, the phase of the vibration is fixed relative to the crankshaft angle because the firing events occur based on the 0-720 degree engine phase, based on a four-stroke mode of engine operation, which constitutes two revolutions of the crankshaft  20 . Considering the order and the phase together, the firing induced vibration is synchronized with the crankshaft revolution. 
     The purpose of the control algorithm is to cancel fixed order vibration. Therefore, the control algorithm relies on order references that are unit cosine and unit sine signals of target order with fixed phase relative to the crankshaft angle. Once, the order reference is synchronized with the crankshaft  20 , the control algorithm finds magnitude and phase of the movements of the active engine mounts  28  relative to the order reference, so that the active engine mounts  28  can cancel vibration induced by the internal combustion engine. For this reason, the synchronization of order reference to engine phase is important to the control of the active engine mounts  28 . 
     Referring to  FIG. 2 , and with continued reference to  FIG. 1 , a crankshaft pulse counter  38  is schematically illustrated. The observed angle of the crankshaft  20  can be measured by counting fifty eight crankshaft pulses. This can be done by using a counter  40 . The counter  40  is preferably operable to count the crankshaft pulses and reset itself when the counter value reaches fifty eight. The output of the counter is a six bit binary number indicating the angle of the crankshaft  20 . However, the starting angle is not deterministic because the counter  40  begins when it is powered asynchronous to other events. A micro-controller  42  reads the six bit binary number with a fixed sampling rate; however, the counter value is updated based on the crankshaft pulse event. The micro-controller  42  may be incorporated within the controller  26  or may be separate. The discrepancy of the crankshaft pulse event and the fixed sampling rate of the micro-controller  42  results in an asynchronous data transfer issue. A gray code encoder  44  and D flip-flops  46  are added to resolve the asynchronous data transfer issue between the counter hardware and the micro-controller  42 . After the counter value is fetched to the controller  26 , a gray code decoder  48  restores the original value of the counter  40 . 
     Referring to  FIG. 3 , and with continued reference to  FIG. 1 , a software implementation of a crankshaft pulse counter is schematically illustrated. An alternative way of implementing the crankshaft pulse counter is to use a hardware interrupt  50 , which is provided by most micro controllers.  FIG. 3  shows a schematic of an interrupt driven crankshaft pulse counter  52 . In this case, there is no need to use external counter hardware. Instead, the crankshaft pulse is directly connected to the hardware interrupt  50  to trigger the interrupt routine. The interrupt routine increases the counter value every time it is triggered. If the counter value reaches fifty eight, the interrupt routine resets the count value to zero. The counter value is stored in a register  54  so that the time based sampling routine can access the data. 
     The entire control algorithm, except the crankshaft pulse interrupt routine, is driven by fixed sampling time. The time based sampling system reads the counter value once per sampling period. Because of the asynchronous sampling between counter update and counter value reading, the counter value reading of the fixed sampling system is very irregular although the actual counter value is regularly increased. 
     A simple way to calculate an estimated crankshaft angle from the count reading is: 
                       θ   ^     ⁡     (   k   )       =         2   ⁢           ⁢   π     58     ⁢     y   ⁡     (   k   )                 (   1   )               
where {circumflex over (θ)}(k) and y(k) are estimated crankshaft angle and the count reading at k th  sample, respectively. However, Equation (1) has two issues. First, the estimated crankshaft angle is not smooth and the cosine and sine generated from this angle is rough or irregular. Second, since the control algorithm does not detect the missing tooth of the target wheel  22  and the estimated crankshaft angle is one revolution average of the crankshaft angle, ignoring the missing pulses distorts the sinusoids and results in performance degradation of the control system, which depends on the reference sinusoid. These issues can be resolved by using the dynamic observer  36 .
 
     For a constant speed, the discrete-time domain kinematics model of crankshaft rotation is as follows:
 
θ( k+ 1)=θ( k )+2 πf ( k )/ f   S ,  (2)
 
 f ( k+ 1)= f ( k ).  (3)
 
where θ(k), f(k), f S  are observed crankshaft angle, rotational frequency, and sampling frequency, respectively.
 
     Two states may be defined as follows:
 
 x   1 ( k )= N θ( k )/2π  (4)
 
 x   2 ( k )= Nf ( k )/ f   S   (5)
 
 y ( k )= x   1 ( k )  (6)
 
where the physical meaning of y(k)=x 1 (k) and x 2 (k) are the observed crankshaft angle in terms of the number of crankshaft pulses and crankshaft speed in terms of the number of crankshaft pulses per sampling time, respectively.
 
     Equations (4), (5) and (6) are then written in state space form: 
     
       
         
           
             
               
                 
                   
                     
                       { 
                       
                         
                           
                             
                               
                                 x 
                                 1 
                               
                               ⁡ 
                               
                                 ( 
                                 
                                   k 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             
                               
                                 x 
                                 2 
                               
                               ⁡ 
                               
                                 ( 
                                 
                                   k 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                       
                       } 
                     
                     = 
                     
                       
                         [ 
                         
                           
                             
                               1 
                             
                             
                               1 
                             
                           
                           
                             
                               0 
                             
                             
                               1 
                             
                           
                         
                         ] 
                       
                       ⁢ 
                       
                         { 
                         
                           
                             
                               
                                 
                                   x 
                                   1 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                             
                           
                           
                             
                               
                                 
                                   x 
                                   2 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                             
                           
                         
                         } 
                       
                     
                   
                   , 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       y 
                       ⁡ 
                       
                         ( 
                         k 
                         ) 
                       
                     
                     = 
                     
                       
                         [ 
                         
                           1 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           0 
                         
                         ] 
                       
                       ⁢ 
                       
                         { 
                         
                           
                             
                               
                                 
                                   x 
                                   1 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                             
                           
                           
                             
                               
                                 
                                   x 
                                   2 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                             
                           
                         
                         } 
                       
                     
                   
                 
               
               
                 
                   ( 
                   7 
                   ) 
                 
               
             
           
         
       
     
     To track y(k) with an observer technique. The dynamic model of the dynamic observer  26  is then: 
     
       
         
           
             
               
                 
                   
                     
                       { 
                       
                         
                           
                             
                               
                                 
                                   x 
                                   ^ 
                                 
                                 1 
                               
                               ⁡ 
                               
                                 ( 
                                 
                                   k 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             
                               
                                 
                                   x 
                                   ^ 
                                 
                                 2 
                               
                               ⁡ 
                               
                                 ( 
                                 
                                   k 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                       
                       } 
                     
                     = 
                     
                       
                         
                           [ 
                           
                             
                               
                                 1 
                               
                               
                                 1 
                               
                             
                             
                               
                                 0 
                               
                               
                                 1 
                               
                             
                           
                           ] 
                         
                         ⁢ 
                         
                           { 
                           
                             
                               
                                 
                                   
                                     
                                       x 
                                       ^ 
                                     
                                     1 
                                   
                                   ⁡ 
                                   
                                     ( 
                                     k 
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   
                                     
                                       x 
                                       ^ 
                                     
                                     2 
                                   
                                   ⁡ 
                                   
                                     ( 
                                     k 
                                     ) 
                                   
                                 
                               
                             
                           
                           } 
                         
                       
                       + 
                       
                         
                           [ 
                           
                             
                               
                                 
                                   l 
                                   1 
                                 
                               
                             
                             
                               
                                 
                                   l 
                                   2 
                                 
                               
                             
                           
                           ] 
                         
                         ⁡ 
                         
                           [ 
                           
                             
                               y 
                               ⁡ 
                               
                                 ( 
                                 k 
                                 ) 
                               
                             
                             - 
                             
                               
                                 y 
                                 ^ 
                               
                               ⁡ 
                               
                                 ( 
                                 k 
                                 ) 
                               
                             
                           
                           ] 
                         
                       
                     
                   
                   , 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       
                         y 
                         ^ 
                       
                       ⁡ 
                       
                         ( 
                         k 
                         ) 
                       
                     
                     = 
                     
                       
                         [ 
                         
                           1 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           0 
                         
                         ] 
                       
                       ⁢ 
                       
                         { 
                         
                           
                             
                               
                                 
                                   
                                     x 
                                     ^ 
                                   
                                   1 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                             
                           
                           
                             
                               
                                 
                                   
                                     x 
                                     ^ 
                                   
                                   2 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                             
                           
                         
                         } 
                       
                     
                   
                 
               
               
                 
                   ( 
                   8 
                   ) 
                 
               
             
           
         
       
     
     The error dynamics can be obtained by substituting Equation (8) from Equation (7) to yield: 
                     {               x   ~     1     ⁡     (   k   )                     x   ~     2     ⁡     (   k   )             }     =       [           1   -     l   1           1             -     l   2           1         ]     ⁢     {               x   ~     1     ⁡     (     k   -   1     )                     x   ~     2     ⁡     (     k   -   1     )             }               (   9   )               
where {tilde over (x)} i (k)=x i (k)−{circumflex over (x)} i (k)
 
     The characteristic equation of the error dynamics (9) becomes:
 
z 2 −(2−l 1 )z+(1−l 1 +l 2 )  (10)
 
     The observer parameter l 1  and l 2  can be designed as follows: 
     A) Construct a continuous time characteristic equation by choosing desired natural frequency ω n  and damping ratio ζ, i.e.,
 
s 2 +2ζω n s+ω n   2   (11)
 
The damping ratio and the natural frequencies are tuning parameters for the dynamic observer  26 .
 
B) Convert Equation (11) into discrete-time version to yield the corresponding discrete-time characteristic equation, i.e.,
 
z 2 −az+b  (12)
 
C) Calculate l 1  and l 2  such that:
 
 l   1 =2 −a  and  l   2   =b+ 1 −a  
 
     An exemplary calculation of l 1  and l 2  is as follows: 
     Damping ratio: ζ=1 
     Settling time: 
     
       
         
           
             
               t 
               s 
             
             = 
             
               
                 4.6 
                 
                   ζ 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     ω 
                     n 
                   
                 
               
               = 
               
                 
                   0.1 
                   ⁢ 
                   
                     ( 
                     sec 
                     ) 
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   yields 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     ω 
                     n 
                   
                 
                 = 
                 
                   46 
                   ⁢ 
                   
                     ( 
                     
                       rad 
                       ⁢ 
                       
                         / 
                       
                       ⁢ 
                       sec 
                     
                     ) 
                   
                 
               
             
           
         
       
     
     Discrete sampling time: T S =0.0005 (sec) 
     Discrete-time characteristic polynomial: z 2 −1.9545+0.955 
     Observer parameters: l 1 =455.e−4 and l 2 =5.e−4 
     The basic structure of the dynamic observer  26  has the form of Equation (8). However, the practical implementation requires several treatments. First, the estimated count ŷ(k)={circumflex over (x)} 1 (k), which corresponds to crankshaft angle, can increase without bound with time while the count reading y(k) is a repeating ramp of 0 to 57. To keep {circumflex over (x)} 1 (k) in range, the algorithm subtracts fifty eight counts from {circumflex over (x)} 1 (k), once every crankshaft revolution. The revolution pulse generation method is as follows: 
                                             Initialization:                     y_old = −1;           Inputs:                   y(k) : Count Reading           Algorithm:                   One_Rev_Flag = 0;           If (y(k) &lt; 0.5*y_old) One_Rev_Flag = 1;                   y_old = y(k);           Outputs:                   One_Rev_Flag                        
As an example of the revolution pulse generation method outlined hereinabove, as the count reading value y(k) resets from fifty seven to one, (y(k)&lt;0.5*y_old) becomes true since one is less than 0.5 multiplied by fifty seven. Therefore, the output One_Rev_Flag is set equal to one indicating one revolution of the crankshaft  20 . Second, since the count reading y(k) is a quantized integer, the estimated count reading ŷ(k) should be a quantized integer to compare the count reading and the count estimates. Third, the estimated count ranges from zero to fifty nine as if there is no missing tooth on the target wheel  22 , while the count reading is zero to fifty seven with missing teeth on the target wheel. This will generate the output error of two even when the dynamic observer  36  is operating correctly.
 
     Referring now to  FIG. 4 , and with continued reference to  FIG. 1 , there is shown a schematic representation of the dynamic observer  36  of  FIG. 1 . At block  56  the count reading y(k) is read into the dynamic observer  36  from the sensor  24  of  FIG. 1 . Subsequently, the estimated count reading ŷ(k) is subtracted from the count reading y(k), via the subtraction module  58 , to determine an error count value e(k). As mentioned hereinabove, the count reading y(k) is a quantized integer; therefore, the estimated count reading ŷ(k) should be a quantized integer to compare the count reading and the count estimates. A module  60  is provided for the quantization of discrete values of the estimated count reading ŷ(k) into a stepwise function. The error count value e(k) is input to a dead band operator module  62  to account for missing teeth on the target wheel  22 . 
     The output of the dead band operator module  62  is subject to gain modules  64 . An integrator module  66  is operable to provide the estimated crankshaft rotational speed {circumflex over (x)} 2 (k) in terms of crankshaft pulses per sampling time. The estimated rotational frequency of the crankshaft {circumflex over (f)} c (k) is output from the integrator module  66  as indicated by block  68 . The output of the integrator module  66  is input to an integrator module  70 , which is operable to provide an estimated crankshaft angle {circumflex over (x)} 1 (k), the value of which is fed back to the quantization module  60  for determination of the error count value e(k). Further, a revolution pulse generation module  72  is provided to reset the estimated crankshaft angle {circumflex over (x)} 1 (k) every time the counter reading at block  56  resets to zero in accordance with the revolution pulse generation method described hereinabove. The output of the dynamic observer  36  is the estimated crank angle {circumflex over (θ)}(k), as illustrated by block  74 . The estimated crankshaft angle {circumflex over (θ)}(k) is smooth and synchronized with the true or observed crankshaft angle θ(k), but with an unknown and constant phase delay. 
     The crankshaft reference cosine and sine of order p can be generated from the estimated crankshaft angle, i.e.,
 
cos p ( k )=( p {circumflex over (θ)}( k ))  (13)
 
sin p ( k )=( p {circumflex over (θ)}( k ))  (14)
 
Where cos p (k) and sin p (k) are p th  order unit cosine and sine, respectively. Also the frequency of p th  order reference f p  is:
 
 f   p   =p{circumflex over (f)}   c ( k )  (15)
 
       FIG. 5  shows the comparison of the first order reference cosine with, illustrated by line  76 , and without, illustrated by line  78 , the dynamic observer  36 . As shown in  FIG. 5 , the dynamic observer  36  discussed hereinabove compensates for the missing teeth of the target wheel  22  and smoothes the roughness of the crankshaft pulse signal due to asynchronous sampling. Similarly, a p th  order reference cosine and sine can be generated from the estimated crankshaft angle {circumflex over (θ)}(k) by multiplying p by the estimated crankshaft angle {circumflex over (θ)}(k) and taking cosine and sine thereof. 
     The present invention enables generation of crankshaft synchronized reference order sinusoid for use in control systems such as the active engine mounts  28 . The present invention resolves the issue of data transition between event based sampling of crankshaft pulse count and time based sampling of active vibration and noise control system. The method also smoothes the estimated crankshaft angle by using the observer technique to generate a smooth and precise reference sinusoid in a time based sampling system. Finally, the estimated crankshaft angle {circumflex over (θ)}(k) does not detect the initial crankshaft position and hence includes an unknown, but constant, angle offset from the actual crankshaft angle. However, the unknown angle offset does not affect the control system since the control algorithm automatically compensates for the unknown offset. Although the forgoing discussion relates generally to a target wheel  22  having fifty eight pulses per revolution of the crankshaft  20 , those skilled in the art will recognize that the present invention may be used with target wheels having an alternate number of pulses per revolution of the crankshaft while remaining within the scope of that which is claimed. 
     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.