Abstract:
An angle of rotation sensor includes a rotary shaft coupled to a permanent magnet. A magnet-sensitive sensor element generates a sinusoidal output signal and a cosinusoidal output signal (V x , V y ) as a function of the relative angle of rotation (a) between magnet and sensor element. Evaluation electronics generate from the output signals a signal corresponding to the angle of rotation. When the shaft rotates about its axis it moves linearly parallel to its axis along a guide track, and changes the distance between the magnet and sensor. From the sensor signals, a signal (B(z)) is determined, which corresponds to the magnitude of the field strength dependent on the distance. From this signal, a gross signal is determined, from which the number (n) of rotations can be determined. From the sinusoidal and cosinusoidal sensor signals, a fine signal is determined, which is added to the number of rotations multiplied by 360°.

Description:
FIELD OF THE INVENTION 
     The present invention relates to the field of position sensors. More specifically, the invention relates to an angle rotation sensor for detecting an angular position of a rotating element. 
     BACKGROUND OF THE INVENTION 
     An angle of rotation sensor is known from German Patent DE 197 47 753 C1. Here, a magnetic field sensor generates sinusoidal and cosinusoidal electrical output signals as a function of the relative rotary position between a magnet attached to a rotating shaft and the sensor. Similar angle of rotation sensors are also known from German Patents DE 195 39 134 A1, DE 44 22 868 A1, DE 41 00 666 A1, and DE 43 01 704 A1. 
     However, these sensors can detect only an angular range of 0° to 360°, which is insufficient for many application purposes. 
     German Patents DE 195 06 938 A1, DE 197 39 823 A1, and DE 199 62 241 A1 therefore propose to expand the measurement range to more than 360° and to couple two sensors by means of gears to the shaft whose angle is to be measured, where the gears have different numbers of teeth. In a similar way, European Patent EP 0 386 334 B1 also proposes coupling two continuous potentiometers to the shaft by means of gears with different numbers of teeth. In these cases, the mechanical complexity of the gears is relatively high. In addition, flank errors and play in the gears cause measuring inaccuracies. 
     German Patent DE 101 40 710 A1 proposes the use of two sensors, one of which has a narrow first angle of rotation measurement range and the other a comparatively larger second angle of rotation measurement range. Here, the first sensor is highly precise and generates a precise linear output signal, while the second sensor is less precise and supplies merely a secondary signal, which is used to determine the period of the output signal of the first sensor. However, expansion of the measurement range beyond 360° requires a translation gear. 
     German Patent DE 198 13 569 A1 proposes providing a worm with spiral raised sections on the rotating shaft whose angle is to be measured, and attaching a sensor with a magnet opposite these raised sections. During rotation, the shaft displaces these raised sections linearly according to the pitch of the worm, whereby the sensor, namely a Hall element, measures the change inductance as a function of position relative to the raised sections of the worm. German Patents DE 299 14 310 U1, DE 44 37 939 C2, AT 004 639 U1, DE 39 35 261 A1, JP 11211456 A, JP 61283801 A, and DE 37 03 591 C2 thereby suggest converting the rotational motion of the shaft into an axial relative displacement between shaft and sensor. 
     U.S. Pat. No. 6,411,082 B2 shows an angle of rotation sensor with a magnetic field-sensitive sensor, such as a Hall element, which is mounted stationary in a housing, and with a permanent magnet, which can move linearly relative to the Hall element. The magnet is coupled to a rack, which converts the rotational motion between itself and the housing into a linear motion. The axial distance between magnet and sensor changes according to the rotary position. Since the pitch of the rack is known, a measure of the angle of rotation can be determined from the output signal of the sensor. 
     However, the latter sensors have less resolving power and thus measuring accuracy than the angle of rotation sensors mentioned in the introduction, which work with sinusoidal and cosinusoidal signals in the measurement range of 0° to 360°. 
     SUMMARY OF THE INVENTION 
     Embodiments of the present invention improve the angle of rotation sensor of the type mentioned in the introduction such that it operates with high resolving power in a measurement range of more than 360° and especially of several full rotations. 
     This and other improvements are realized by the features of the present invention. Advantageous configurations and refinements of the invention also follow. 
     A principle of the invention is to also move the shaft, whose angle of rotation is to be measured, in the axial direction along a guide track as the shaft rotates about its axis, so that the distance between a magnet and sensor changes during rotation according to the pitch of the guide track. In this way, the amplitude of the sensor output signal changes, which produces a signal from which the number of full rotations completed by the shaft can be determined with sufficient accuracy. On the other hand, a precise signal for an angle in the range from 0° to 360° (e.g., excess rotation angle) can be determined within a full rotation from the sinusoidal and cosinusoidal signals, which is then added to the value of the number of full rotations times 360°. 
     In one embodiment, the slip guide can be threaded with a linear pitch. The absolute value of the field strength then changes according to a quadratic function (F(z)=1/z 2 ). However, the guide track can also be non-linear and can preferably also follow a quadratic function, whereby the amplitude then changes according to a linear function. Advantageously, the guide track follows a continuous, monotonic function. 
     Thus, a gross signal is obtained corresponding to the distance in the z-direction between the magnet and sensor, which is sufficient for determining the number of rotations. A fine signal is obtained by evaluating the sinusoidal and cosinusoidal output signals. The total result then has the precision of the fine signal, while the measurement range is expanded to a plurality of rotations. Practical tests have shown that a number of rotations of n=10 can be achieved without additional means. 
     The evaluation of the gross signal is realized preferably such that a plurality of values of “support points” is stored in a memory, which reproduce, e.g., the corresponding maximum amplitude values of the sinusoidal signal for each period, e.g., at 90°, 270°, etc. Then, an iterative algorithm polls the stored values to determine which two support points surround the gross signal, whereby a value n is obtained, which indicates within which period of the output signal or rotation of the shaft the output signal lies. 
     The evaluation of the sinusoidal or cosinusoidal signal is realized in principle by means of an arctangent function, which is preferably performed under the use of the known CORDIC algorithm. 
     Alternatively, the invention may comprise various other methods and apparatuses. 
     Other features will be in part apparent and in part pointed out hereinafter. 
    
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
       In the following, the invention is explained in more detail with reference to an embodiment in connection with the drawing. Shown are: 
         FIG. 1 , a schematic diagram of an angle of rotation sensor according to the invention; 
         FIG. 2 , a diagram of the sinusoidal and cosinusoidal output signals of the applied sensor elements; 
         FIG. 3 , a flow chart for explaining the function of an evaluation circuit, which processes the output signals according to  FIG. 2 ; and 
         FIG. 4 , a detailed flow chart for explaining the operating principle of the evaluation circuit. 
       Corresponding reference characters indicate corresponding parts throughout the drawings. 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     This application claims priority of German application DE 103 34 869.7, filed Jul. 29, 2003, the entire disclosure of which is explicitly incorporated by reference. 
     The angle of rotation sensor of  FIG. 1  is designated in its entirety by the reference character  1 . A magnet  3 , which has a north pole  4  and a south pole  5 , which are separated by an imaginary plane  6 , which is parallel to the axis of rotation of the shaft  2 , is mounted on a rotary shaft  2 , whose angle of rotation a is to be measured. Opposite the magnet  3  there is a sensor unit  7 , which contains two magnetic field-sensitive sensors  8  and  9 , whose main directions of sensitivity are perpendicular to each other and lie in a plane (x-, y-plane) that is perpendicular to the center axis of the shaft  2 . However, it should be mentioned that the two sensors  8  and  9  need not be perpendicular to each other in every case, but can also be aligned at a different angle φ to each other. The sensors  7  and  8  can lie next to each other in the xy-plane, as shown, but they can also be arranged one above the other. In general, any type of magnetic-field sensor can be used, e.g., Hall probes, induction coils, or the like. If the shaft  2 , and thus the magnet  3  are turned relative to the sensors  8  and  9 , then the flux density of the magnetic field or the magnetic field strength changes and the two sensors generate a periodic output signal, which in principle is sinusoidal, as a function of angle of rotation a. If the two sensors  8  and  9  are aligned in the xy-plane perpendicular to each other, then the two output signals have a 90° phase shift relative to each other, so that one sensor supplies a sinusoidal output signal and the other a cosinusoidal output signal. These output signals are supplied to an evaluation device  10 , which evaluates the signals in the way described further below. 
     With the angle of rotation sensor described thus far, in principle only angles up to one full rotation, i.e., up to 360°, can be measured. 
     For the detection of a larger angular range, which can include several full rotations, the vertical distance in the z-direction between the magnet  3  and the sensor unit  7  is changed by an amount δz for each complete rotation. 
     For this purpose, a stationary guide track  11  is provided, which interacts with a guide element  12  on the shaft  2 . In simple case, the guide track  11  and guide element  12  can be spiral threads with a constant pitch, so that the magnet  3  changes its distance to the sensor unit  7  proportional to the angle of rotation α, where in this case, the change in distance in the z-direction for each complete rotation corresponds to the value δz. The field strength measured by each sensor  8  and  9  then changes as a function of the distance in the z-direction according to a function 1/z 2 . 
     However, instead of threads for the guide track  11  and the guide element  12 , other guides can also be used, e.g., a sliding block guide  11  with a tracing pin  12 . The pitch of the sliding block guide then need not be constant but must merely follow a monotonic function. This function can be, e.g., a quadratic function, which can compensate for the quadratic dependency of the sensor output signals on the distance in the z-direction. 
       FIG. 2  shows the dependency of the output signals V x  and V y  of sensors  7  and  8  as a function of angle of rotation a, which in the shown example can equal 3600°, thus ten full rotations. Here, the curve V x  is a sinusoidal signal and the curve V y  is a cosinusoidal signal, as long as the two sensors  7  and  8  are aligned at exactly 90° to each other in the xy-plane relative to their forward direction. As already mentioned, however, the sensors can also be offset by a different angle φ, wherein the signals V x  and V y  then generally have a phase shift by the angle φ. 
     The curve B z  shows the dependency of the two output signals V x  and V y  on the distance between the sensors  8  and  9  and the magnet  3 , which runs here at a linear pitch of the slip guide  11 ,  12  according to a quadratic function (1/z 2  [sic; z 2 ]) and acts as an envelope for the signals V x  and V y . A signal corresponding to curve B z  can be calculated according to the relationship sin 2 α+cos 2 α=1, from which the angle α can be determined. However, because the curve B z  is very flat for larger angle ranges, such an evaluation would produce minimal sensitivity or minimal resolving power. Therefore, the curve B 7  is generally used only to determine how many full rotations n the angle of rotation sensor has completed, where
 
 n= 0 for 0≦α≦360°
 
 n= 1 for 360≦α≦720° etc. 
 
     On the other hand, within the individual full rotations, a fine evaluation is performed by evaluating sinusoidal and cosinusoidal signals V x  and V y . 
     The connection between the magnetic field strength as a function of distance z reads in gross approximation: 
         B   ⁡     (   z   )       =         B   0     *     h   2           (     z   +   h     )     2           
 
where h=edge length of magnet and B 0 =flux density at z=0, i.e., 0 mm distance.
 
     Because the sensors only register the flux density components in the direction of their sensitivity, they have a sinusoidal or cosinusoidal output signal. The relationship reads:
 
 V   x (α; z )= B ( z )* S   x *cos(α) 
 
 V   y (α; z )= B ( z )* S   y *sin(α) 
 
where α=angle between magnetic field main direction and sensitivity direction of the y-sensor; S x , S y =sensitivity of the sensors in x- and y-directions, respectively.
 
     Consequently, the two sensors  8  and  9  measure the x- and y-components, respectively, of the magnetic field and therefore have the profiles shown in  FIG. 2  in the curves V x  and V y . 
     If one assumes that the two sensors  8  and  9  each have the same sensitivity, then 
              B   ⁡     (   z   )            =             V   x   2     ⁡     (     α   ;   z     )       +       V   y   2     ⁡     (     α   ;   z     )             S   0           
     and     
         tan   ⁢           ⁢   α     =         V   y     ⁡     (     α   ;   z     )           V   x     ⁡     (     α   ;   z     )             
 
from which it follows that: 
       α   =     arctan   ⁡     (         V   y     ⁡     (     α   ;   z     )           V   x     ⁡     (     α   ;   z     )         )           
 
     There are several calculation possibilities using a microcontroller or an ASIC. On the one hand, the arctangent function can be realized by a series expansion, which is relatively time consuming; on the other hand, tables stored in memory can be used for the arctangent function, which results in a large space requirement for the memory. An efficient method is to perform a coordinate transformation, which is possible, e.g., using the known CORDIC algorithm (Coordinate Rotation Digital Computing). For a required calculation accuracy, this algorithm always requires the same number of cycles and uses only addition and shift operations. It is also excellently suited for realization in pure hardware, which permits a high computation rate. 
     From the arctangent function given above, an angle signal is given in a range from 0° to 360°. Furthermore, there is the magnitude signal of B(z). To obtain information on how many full rotations the angle of rotation sensor has completed from these signals, it is in principle possible to linearize the signal B(z) by an inverse function and to determine from this the number of rotations. However, this has proven to be computation-intensive due to the division and root calculation. It is simpler to compare the signal with preset, stored values and to obtain the information in this way. Therefore, preferably a number k of support points is provided with
 
 k =( n* 2)+2 
 
where n=number of rotations to be measured.
 
     In order not to produce erroneous assignments at the corresponding jump positions from 360° to 0°, a computational routine is necessary, which considers the actual angle. Such a routine could look like the following: 
     
       
         
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                  Rounding calculation with error recognition 
               
             
          
           
               
                   
                  for (i=0;i&lt;22;i++) 
               
               
                   
                 { 
               
             
          
           
               
                   
                  if ((amount&gt;=supportpoint[i]&amp;&amp;angle&lt;180)) 
               
               
                   
                 { 
               
             
          
           
               
                   
                    i=(i&gt;&gt;1); 
               
               
                   
                 break; 
               
             
          
           
               
                   
                  } 
               
             
          
           
               
                   
                  else if ((amount&gt;=supportpoint[i]&amp;&amp;angle&gt;180)) 
               
               
                   
                 { 
               
             
          
           
               
                   
                    i=(i&gt;&gt;1)−1); 
               
               
                   
                 break; 
               
             
          
           
               
                   
                  } 
               
               
                   
                 i++ 
               
               
                   
                 if (amount&gt;supportpoint[i]) 
               
               
                   
                 { 
               
             
          
           
               
                   
                 i=(i−1)&gt;&gt;1; 
               
               
                   
                 break; 
               
             
          
           
               
                   
                  } 
               
             
          
           
               
                   
                   } 
               
             
          
           
               
                   
                  END Rounding calculation with error recognition 
               
               
                   
                   
               
             
          
         
       
     
     Here, the value that the variable “1” takes on after the for-loop is exited is the actual rounding number. The support points [i] (i=0 . . . 21) are the amounts for the angles 90°, 270°, 450°, 360° . . . 
     The support points must be measured once and stored before startup of the sensor. 
       FIG. 3  shows a flow chart for the calculations described above. At  302 , two sensors  8  and  9 , which are here designated as sensor x and sensor y, supply the two signals V x  and V y . From here, the angle α is calculated, preferably by a coordinate transformation, in the range of one full rotation, thus only in the range from 0° to 360° at  304 . 
     In another step at  306 , with reference to the above function B(z), it is determined how many rotations x the angle of rotation sensor has completed. In a last step, the number of rotations x is multiplied by 360°, and the angle α, which lies only in the range from 0° to 360°, is added at  308 . 
       FIG. 4  shows the flow chart of  FIG. 3  in somewhat more detail. The output signals of sensors  7  and  8  are initially supplied to analog amplifiers  14  and  15  and then digitized by analog/digital converters (ADCs) 16  and  17 . Then possible offset errors are corrected in computational elements  18  and  19  and one of the output signals V x  or V y  is corrected with reference to a possible error adjustment ( 20 ). Then the coordinate transformation is performed, preferably according to the CORDIC method (block  21 ) described above and then, as described in connection with  FIG. 3 , rotation recognition (block  22 ) is performed and the number of rotations n multiplied by the angle 360° is added to the fine angle output by the CORDIC block  21  (block  23 ). 
     Then another error correction can be performed. For this purpose, during the initial calibration of the angle of rotation sensor, error values are measured and stored at individual angles, which are then corrected in the error correction (block  24 ). The final output signal can then be output by means of a digital interface  25 , a digital output  26 , or a digital/analog converter (DAC)  27  to an analog output  28 . 
     If the two sensors  7  and  8  are aligned with their advancing directions not perpendicular to each other, but instead at an angle φ different from 90°, then one signal has the form sin(α) and the other sin(α+φ). The cosinusoidal signal then can be determined as follows: 
         cos   ⁡     (   α   )       =         sin   ⁡     (     α   +   φ     )         sin   ⁡     (   φ   )         -       sin   ⁡     (   α   )         tan   ⁡     (   φ   )               
 
     Then, in the same way as described above, additional processing can be performed with these signals. 
     From the above, it can also be seen that the amount B(z) can be relatively imprecise. Only the values at the support points mentioned above need be unambiguously distinguishable from each other. The algorithm described above polls the stored values successively from above or below (according to the value) to determine which two successive support points surround this value, wherein the number of rotations can then be determined unambiguously. 
     If the pitch of the slip guide  11 ,  12  is not linear, but instead follows, e.g., a quadratic function, then the function B(z) can also be linearized, wherein the evaluation is simplified. Also for a linear function of B(z), the support point method described above can be used. Alternatively, the integer portion of a division by 360° can also be used to determine the integer value of rotations. 
     The order of execution or performance of the methods illustrated and described herein is not essential, unless otherwise specified. That is, elements of the methods may be performed in any order, unless otherwise specified, and that the methods may include more or less elements than those disclosed herein. 
     When introducing elements of the present invention or the embodiment(s) thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements. 
     In view of the above, it will be seen that the several objects of the invention are achieved and other advantageous results attained. 
     As various changes could be made in the above constructions, products, and methods without departing from the scope of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.