Abstract:
A method and apparatus for automatic resonance detection is disclosed for a motor-driven mechanical system such as a voice coil motor (VCM) in which a resonance detector and driver are provided. The automatic resonance detector is implemented on the same integrated circuit as the driver, and dynamically determines the natural resonant frequency of the VCM driven by the driver. The resonant frequency is determined by measuring the back electromotive force (BEMF) of the VCM, detecting the slope of the BEMF signal, and determining the resonant frequency from the slope of the BEMF signal.

Description:
BACKGROUND 
     The present invention relates to motor control and control of motor driven systems. More specifically, it relates to a method and apparatus for determining the resonant frequency of a motor system, such as a voice coil motor (VCM), for use in anti-ringing control systems. 
     Motor-driven translational systems are commonplace in modern electrical devices. They are used to move a mechanical system within a predetermined range of motion under electrical control. Common examples include image stabilization and autofocus systems for digital cameras, video recorders, portable devices having such functionality (e.g., mobile phones, personal digital assistants, and hand-held gaming systems), and laser drivers for optical disc readers. 
     In a camera or video recorder, a lens driver controls an actuator that moves the lens assembly back and forth for image stabilization and to adjust focus and magnification. One such actuator is the VCM. In a VCM, the lens position is fixed by balancing the motor and spring forces of the VCM. In other words, the VCM can be modeled as a mass coupled to a spring. When a motor moves the mass according to the drive signal, the motion generates other forces within the system which can cause the mass to oscillate around the new location at some resonant frequency (f R ). This oscillation is also known as “mechanical ringing.” For example, resonant frequencies of approximately 110 Hz have been observed in consumer electronic products. Such oscillation typically diminishes over time, but impairs performance of the device in its intended function by, for example, extending the amount of time that a camera lens system takes to focus an image, distorting the image, and shortening the lifetime of the VCM. 
     Mechanical ringing of VCMs can be reduced by minimizing the energy supplied to the VCM at its resonant frequency, which will in turn enable the user to achieve fast mechanical settling times and enhance autofocus response times and image quality. The response of the VCM may be damped by filtering the drive signal applied to the VCM, for example through a notch filter with a center frequency at the resonant frequency, and having a stopband sufficiently wide to accommodate the expected tolerance around a VCM nominal resonant frequency. Currently, the VCM nominal resonant frequency is a single fixed frequency estimated and pre-programmed into a motor driver before operation. 
     Pre-programming the resonant frequency, however, can cause imprecise operation. The resonant frequency of a VCM may vary due to different vendors, the manufacturing process, or age. System manufacturers often do not know the resonant frequency of their mechanical systems precisely. Additionally, particularly in consumer electronics where system components must be made inexpensively, the resonant frequency can vary across different manufacturing lots of a common product. Furthermore, as a VCM ages, its resonant frequency may change as well. Thus, the end-user estimated and programmed nominal resonant frequency may be substantially different from the actual resonant frequency of the mechanical system. 
     Thus, there is a need in the art for a method to dynamically and accurately determine the natural resonant frequency of a VCM actuator, to aid the design of shorter filters, and accommodate the variations in resonant frequency. It would be further advantageous for this method to be automatic resonance detection built into the motor driver on-chip. It would be further advantageous for the resonant frequency detection to be designed to enable anti-ringing filtering “on-the-fly.” 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a system according to an embodiment of the present invention. 
         FIG. 2  is an exemplary waveform diagram of a current step driven into a VCM, and the corresponding voltage across the VCM. 
         FIG. 3  is a flowchart illustrating a method for determining a resonant frequency of a VCM by sampling a BEMF signal according to an embodiment of the present invention. 
         FIGS. 4A-4C  illustrate exemplary signals that may be processed as part of resonant frequency estimation. 
         FIG. 5A  is a simplified circuit diagram of a single-ended switched-capacitor slope detector according to an embodiment of the present invention. 
         FIG. 5B  is an exemplary timing diagram of sampled signals corresponding to the operation of the circuit of  FIG. 5A . 
         FIG. 6  is a simplified circuit diagram of a differential switched-capacitor slope detector according to an embodiment of the present invention. 
         FIG. 7  is a simplified circuit diagram of a multi-stage comparator according to an embodiment of the present invention. 
         FIG. 8  is simplified circuit diagram of a driver according to an embodiment of the present invention. 
         FIG. 9  is an exemplary analyzer for determining a resonant period according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the present invention provide techniques for determining the resonant frequency of a motor-driven mechanical system. Such techniques may include driving a current step into the motor-driven mechanical system and detecting a BEMF (back electromotive force) signal therefrom. Thereafter, a slope of the BEMF signal may be derived and its polarity may be measured. The resonant frequency of the mechanical system may be derived by measuring a time that elapses between a first type of polarity change and a subsequent occurrence of the same type of polarity change. For example, the time between successive positive-to-negative transitions in the signal (or slope signal) or the time between successive negative-to-positive transitions in the signal (or slope signal) may reflect the resonant frequency of the mechanical system. Such techniques may be employed in a motor driver that measures the resonant frequency prior to run-time operation (for example, during start up), then applies the resonant frequency during run-time operation. 
       FIG. 1  illustrates a motor driver system  100  according to an embodiment of the present invention. The system  100  may include a resonance detector  110  and a driving system  120 , which may be provided in a common integrated circuit. The system  100  may be coupled at pins P to an external mechanical system M (which may include a VCM or other motor) that is to be driven by the system  100 . The driving system  120  may generate driving signals to the motor M during different modes of operation—a resonance detection mode and a run-time mode. The resonance detector  110  may detect a resonant frequency f R  of the motor M based on measurements taken at one or more pins P. The resonance detector  110  may provide its estimated resonance frequency f R  to the driving system  120  for use in run-time operation of the system  100 . 
     In an embodiment, the resonance detector  110  may include a BEMF detector  112 , slope detector  114 , and analyzer  116 . The BEMF detector  112  may detect a BEMF signal generated by the motor M. The slope detector  114  may detect and measure a slope of the BEMF signal. The analyzer  116  may determine the resonant frequency of the VCM based on the slope information received. The BEMF detector  112  and slope detector  114  may be implemented as a single circuit or as separate circuits. 
     During operation, the mechanical system M may generate a BEMF signal, which may be induced by vibration of the mechanical system M. The BEMF&#39;s signal frequency may correspond to the mechanical system&#39;s resonant frequency. This signal may be measured by the BEMF detector  112  through pins P. The BEMF detector  112  may capture the BEMF signal and output a representation of the BEMF signal to the analyzer  116 . For example, the BEMF detector  112  may output a captured BEMF signal to a slope detector  114 , which may detect the polarity of the slope therefrom and may output signals representing changes in slope polarity of the BEMF signal to the analyzer  116 . The analyzer  116  may estimate the resonant frequency of the mechanical system M by measuring the time between successive positive-to-negative transitions in the slope signal or the time between successive negative-to-positive transitions in the slope signal. The analyzer  116  may perform its operations according to a system clock signal CLK, and may output the resonant frequency to driving system  120 . 
       FIG. 1  also illustrates components of an exemplary driving system  120 , which may include an f R  register  122  and a driver  140 , which may include a drive signal generator  124  and a filter  126 . The f R  register  122  may store data representing the resonant frequency of the mechanical system M. The driver  140  may read the resonant frequency data from resonant frequency register  122  and may generate a drive signal tuned to the resonant frequency to drive VCM M.  FIG. 1  illustrates a filter  126  representing filtering to conform the drive signal to the detected resonant frequency of the mechanical system M. Filter  126  and drive signal generator  124  may be implemented as a single circuit or as separate circuits. 
     The driver  140  may perform its operations according to a system clock signal CLK. The driver  140  may output a drive signal according to the resonant frequency determined by the analyzer  116  and stored in the f R  register  122 . The frequency distribution of the drive signal may be controlled to have zero (or near zero) energy at the detected resonant frequency f R  of the mechanical system M. The drive signal may include pulses according to timing determined from 
               t   c     ≅       1     2   ⁢           ⁢     f   R         .           
The drive signal also may be filtered by a filter  126  to broaden a zero-energy notch at the detected resonant frequency, f R .
 
     Although  FIG. 1  illustrates the mechanical system M being coupled to the motor driver system  100  by a pair of pins P, the principles of the present invention accommodate other embodiments. For example, the mechanical system M may be coupled to the motor driver system  100  at a single pin P (a second terminal of the mechanical system M may be coupled to ground). In another configuration, shown herein in other drawings, the motor driver system  100  and mechanical system M may be connected in series between a pair of supply voltages. Thus different embodiments of the present invention permit the resonance detector  110  to capture a representation of the BEMF signal by sampling voltages across the motor or across the motor driver system  100  and derive the resonance frequency from each of these sampling methodologies. 
     In a further embodiment, the motor driver system  100  may include a register  130  to store expected resonant frequency such as one that is preprogrammed by a manufacturer or user of the system  100 . During a resonance detection mode, the motor driver system  100  may develop a drive signal to the mechanical system M that matches the expected resonant frequency as stored in the register  130 . The actual resonant frequency may then be confirmed or determined therefrom. 
       FIG. 2  illustrates waveforms that may occur in a system such as  FIG. 1 . A driving system may apply a driving current  210  to a mechanical system. In the example of  FIG. 2 , drive current  210  is illustrated as provided as a current step that increases to a predetermined value (0 mA to 30 mA in the example of  FIG. 2 ) as quickly as circuit components allow.  FIG. 2  simulates a voltage  220  that may be developed across the mechanical system M in response to a drive current  210 . The motor voltage  220  has a DC component representing the driving signal and a BEMF voltage, created by vibration of the mechanical system M, which is superimposed over the driving signal. The BEMF voltage may decay over time as shown in motor voltage graph  220 . 
       FIG. 3  illustrates a method  300 , according to an embodiment of the present invention, for sampling a BEMF signal and deriving a resonant frequency of the mechanical system M therefrom. The method  300  may be performed iteratively over several sampling instants, represented at times T, T-1, T-2, etc. The method may sample a BEMF signal generated from the mechanical system M at a current iteration, represented as time T (box  310 ). In step  320 , the method may estimate a change in the BEMF signal (ΔBEMF T ) from a preceding sample, taken at time T-1, to the current sample, taken at time T. In steps  330  and  340 , the method may compare the ΔBEMF signals at times T-1 and T (ΔBEMF T , ΔBEMF T-1 ) to each other to determine whether they have common polarities (e.g., both positive or both negative). If the polarities are the same, then method  300  may return to step  310  for another iteration of sampling. 
     If, in step  340 , the method  300  determined that the ΔBEMF polarities are not the same, then method  300  may proceed to step  350 . In step  350 , the method  300  may record a time of sample T and, optionally, a type of polarity change. The type may be a positive-to-negative or negative-to-positive change. In step  360 , the method  300  may determine whether a previous change in polarity has been recorded having the same type as the present change. If there was not a previous change in polarity of the same type, method  300  may return to step  310  for another iteration of sampling. If there was a previous change in polarity of the same type, the method  300  may derive the resonant frequency of the mechanical system M from the times of the two polarity changes in polarity of the same type. 
     Although  FIG. 3  illustrates a method that operates directly on BEMF signals to generate ΔBEMF signals and polarities thereof, other embodiments of the present invention may be applied to filtered BEMF signals. For example, in another embodiment (not shown), the method  300  may develop a slope of the BEMF signal by filtering the BEMF signal or other processing, then sample a signal representing the slope of the BEMF signal rather than sampling the BEMF signal directly. In this embodiment, operations of boxes  310 - 360  may be performed on the sampled slope signal rather than the BEMF signal itself. In all other respects, the operations of  FIG. 3  may be performed directly on the sampled slope signal. 
       FIGS. 4A to 4C  illustrate exemplary signals that may be generated by various embodiments of the present invention during detection of a resonant frequency of the mechanical system M.  FIG. 4A  shows an exemplary BEMF signal  410 , which may be sampled by a BEMF detector and processed as described in  FIG. 3  and elsewhere herein.  FIGS. 4B and 4C  each illustrate different processing techniques that may be applied to such a signal.  FIGS. 4A-4C  illustrate exemplary sampling operations that are performed at times t 1 -t 15  respectively. 
       FIG. 4B  shows application of the method of  FIG. 3  to the BEMF signal directly. In this embodiment, pulses  420  at times t 1 -t 15  represent a comparison between the BEMF signal  410  and a reference voltage (such as ground). A resonant period of the BEMF signal may be detected as an amount of time that elapses between two adjacent transitions in the BEMF signal of a common type (e.g. two high-to-low transitions or two adjacent low-to-high transitions). For example, transitions at times t 5  and t 12  are of a common type. 
       FIG. 4C  shows application of the method of  FIG. 3  to a slope of the BEMF signal. In this embodiment, pulses  430  at times t 1 -t 15  represent a direction of the slope of the BEMF signal  410  (e.g., the BEMF signal  410  is rising or falling). A resonant period of the BEMF signal  410  may be detected as an amount of time that elapses between two adjacent transitions in the BEMF slope signal  430  of a common type (e.g. two high-to-low transitions or two adjacent low-to-high transitions). For example, transitions at times t 3  and t 10  are of a common type. The example provided above shows a single iteration of the method steps which results in detection of a single period. However, it is also possible to consider other samples forming additional sets of rising or falling edges. For example, the resonant frequency may be derived from the average of a plurality of time durations. This may improve the accuracy of the resonant frequency measurement or serve as an error-check. 
     Moreover, the example of  FIGS. 4A-4C  illustrate exemplary sampling intervals so as to illustrate operational principles of the present invention. In practice, sampling intervals may occur at a rate much higher than an expected resonant period of the BEMF signal (e.g., for a BEMF signal with an expected resonant frequency 150 Hz, a sampling rate in excess of 15 KHz may be used.). In implementation, the sampling rate may be tailored to suit individual application needs. 
       FIG. 5A  is a circuit diagram of a motor driver system  500  according to an embodiment of the present invention. The system  500  may include a driving system  510  and a BEMF/Slope detector  530 , each coupled to a mechanical system M. In the embodiment illustrated in  FIG. 5A , the mechanical system M may be coupled in series with components  511 ,  512  of the driving system  510  between a supply voltage VDD and ground. The BEMF/Slope detector  530  may be coupled to a node N between the mechanical system M and the driving system  510  and may capture the BEMF signal at the node N. 
     The slope detector  530  may include switches S 1 , S 2 , S 3 , and S 4 . 1  and S 4 . 2 , capacitors  531  and  533 , and a comparator  532 . A first switch S 1  may connect a first terminal (an “input terminal,” for convenience) of capacitor  531  to the input node N and a second switch S 2  may connect an input terminal of capacitor  533  to the input node N. A third switch S 3  may connect the input terminals of the two capacitors  531 ,  533  to each other. Second terminals (called “output terminals,” for convenience) of each capacitor  531 ,  533  may be connected to respective positive and negative inputs of the comparator  532 . Switches S 4 . 1  and S 4 . 2  may connect the output terminals of the respective capacitors  531 ,  533  to a reference voltage Vref. The comparator  532  may produce a binary output, which is output from the BEMF/Slope detector  530 . 
     The BEMF/Slope detector  530  may generate a binary signal representing a type of change in the BEMF signal obtained from the mechanical system (e.g., the BEMF signal is rising or it is falling). The BEMF/Slope Detector  530  may operate iteratively at a predetermined clock rate. 
       FIG. 5A  provides only a partial representation of the driving system  510 . The driving system  510  may include a transistor  511  and a resistor  512  coupled in the VDD to ground path that is occupied by the mechanical system M. The transistor  511  may receive a control signal from other components of the driving system  510  (e.g., a drive signal generator  124  in  FIG. 1 ) that modulates an amount of driving current that may pass through the motor M. In this configuration, vibrations that may be induced in the motor M due to mechanical resonance may induce corresponding fluctuations in voltage at the input node N to the BEMF/source detector  530  and may be detected by the circuit  530 . 
       FIG. 5B  is an exemplary timing diagram of control signals that may be applied to the switches S 1 , S 2 , S 3 , and S 4 . 1  and S 4 . 2  of  FIG. 5A . At time T 0 , switches S 1 , S 2 , and S 4 . 1  and S 4 . 2  are closed and switch S 3  is open. While switches S 4 . 1  and S 4 . 2  are closed, both inputs to the comparator  532  are pulled to Vref. At time T 1 , switch S 1  may open and a voltage is captured on the capacitor  531  representing a difference between the BEMF signal (BEMFT 1 ) and Vref. At time T 2 , switch S 2  may open and a second voltage is captured on capacitor  533  representing a difference between the BEMF signal (BEMFT 2 ) and Vref. At time T 3 , switches S 4 . 1  and S 4 . 2  may open and switch S 3  may close, forcing charge redistribution at the input terminals of capacitors  531  and  533 . This results in voltages on the output terminals of the capacitors  531  and  533  to move corresponding to a difference between BEMFT 1  and BEMFT 2 . The comparator  532  may generate a binary signal corresponding to a direction of change between the BEMF signal at times T 1  and T 2 . 
     The switches may reset the BEMF/Slope detector  530  at times T 4  and T 5  to prepare it for another iteration of operation. At time T 4 , switches S 4 . 1  and S 4 . 2  may close and switch S 3  may open, which pulls the output terminals of the capacitors  531 ,  533  to Vref. Switches S 1 , S 2  may close at time T 5 , which couples the input terminals of the capacitors  531 ,  533  to the input node N. 
       FIG. 6  shows a simplified circuit diagram of a motor driver system  600  with a BEMF/slope detector  630  according to another embodiment of the present invention. In this embodiment, the BEMF/slope detector  630  has a pair of inputs coupled across the driving system  610 , shown here as nodes N 1 , N 2 . The BEMF/slope detector  630  may include capacitors  631  and  633 , switches S 1  and S 2 , and a comparator  632 . A first terminal (again, the “input terminal”) of capacitor  633  may be connected to a node N 1  that connects the motor M to the driving system  610 . An input terminal of capacitor  631  may be connected to a second node N 2 , which in the configuration illustrated in  FIG. 6  is shown as ground. Output terminals of the capacitors  631 ,  633  may be coupled to respective positive and negative inputs of the comparator  632 . Switches S 1  and S 2  respectively may connect the output terminals of the capacitors  631 ,  633  to a reference voltage V ref . The comparator  632  may produce a binary output. 
     The BEMF/slope detector  630  of the  FIG. 6  embodiment is a differential system. It develops a binary output signal from a comparison of voltages present at nodes N 1  and N 2 . By operating differentially, this embodiment may improve power supply and common-mode input noise rejection. 
     The BEMF/slope detector  630  may operate in several phases of operation. During a reset phase, switches S 1  and S 2  may be closed, such that the output terminals of the capacitors  631  and  633  are pulled to a reference voltage, V ref . During a sampling phase, switches S 1  and S 2  may be opened. Changes in the voltages at nodes N 1  and N 2  may include corresponding changes in voltage at the inputs to the comparator  632 . The comparator  632  may generate a binary output that represents a direction of change in the BEMF signal as represented by the voltages on nodes N 1  and N 2 . The switches S 1  and S 2  may close upon conclusion of the sampling phase, which resets the capacitors  631 ,  633  for another iteration of operation. Operation of the BEMF/slope detector  630  may repeat for as long as desired until the test is completed. 
     Although  FIG. 6  illustrates an embodiment in which input terminals of the BEMF/slope detector  630  are coupled across nodes of the driving system  610 , the principles of the present invention may be extended to other configurations. For example, input terminals of the BEMF/slope detector may be coupled across the motor M rather than the driving system  610 . 
       FIG. 7  illustrates a BEMF/slope detector  700  according to a further embodiment of the present invention. In this configuration, the detector  700  may include an input filter system  720 , and a plurality of sampling stages  730 . 1 - 730 .N. The input filter system  720  may include an RC circuit, sampling capacitors C 0 , and sampling switches S 0 . For example, the RC circuit of the input filter may include resistors  721  and  723  and capacitor  722 , as shown. A buffer (not shown) may be coupled between the RC circuit and the sampling capacitors C 0 , which provides improved charge isolation. The input filter  720  may have multiple stages (not shown). The input filter  720  conditions an input signal for sampling by stages  730 . 1 - 730 .N, and may be coupled to respective positive and negative inputs of the comparator  710  of the first sampling stage  730 . 1 . 
     Each sampling stage may include a comparator  710 , switches S 1  and S 2 , and capacitors C 1  and C 2 . Switches S 1  and S 2  respectively may connect the outputs of comparator  710  of stage  730 . 1  to reference voltages V 1  and V 2 . A first terminal (again, the “input terminal”) of capacitor C 1  may be connected to a first output of comparator  710 , and an input terminal of capacitor C 2  may be connected to a second output of comparator  710 . Output terminals of capacitors C 1  and C 2  may be coupled to respective positive and negative inputs of comparator  710  of stage  730 . 2 . Each stage may be connected to the next in this fashion. In this way, the offset of each stage may be stored on its output capacitors C 1  and C 2 , such that when the switches S 1  and S 2  are opened, the subsequent stage may see only the differential signal representing the direction of change in the input signal with near zero or substantially no offset contribution from the previous stage. For the later stages, for example stage  730 .N, the input signal may be gained up sufficiently so as to have adequate signal-to-noise ratio. Earlier stages, such as the stages  730 . 1 ,  730 . 2 , may include filtering to reject differential supply noise. 
     The BEMF/slope detector  700  of the  FIG. 7  embodiment is a multi-stage low-offset comparator. A low offset comparator improves the accuracy of slope detection, because it is better able to distinguish a change in the slope of a signal when the amplitude of the signal is small. The comparator offset may be advantageously designed to be less than the maximum change in voltage for successive BEMF samples. This is dependent on the magnitude and frequency of the BEMF, as well as the sampling rate of the system. 
       FIG. 8  is a circuit diagram of a driving system  800  according to another embodiment of the present invention. The system  800  may include a driving system  810  and a motor M. The driving system  810  may include an operational amplifier  813 , a current modulating transistor  814  and a resistor  815 . The transistor  814  and resistor  815  may be provided in series with a motor M of the mechanical system between a source voltage VDD and ground. During operation, the operational amplifier  813  may control conductivity of the transistor  814  to ensure that voltage generated at a node between the transistor  814  and the resistor  815  matches an input voltage presented to the amplifier  813 . 
     The embodiment of  FIG. 8  may be used with the BEMF/Slope detectors of any of the foregoing embodiments. The BEMF/Slope detectors may have their inputs coupled to a node  821  at a coupling between the driver  810  and the motor M. For BEMF/Slope detectors with differential inputs, a second input may be taken from one of the supply voltages (V DD  or ground). 
     The BEMF signal measured across the driving system  810  will have equal magnitude as BEMF signal measured across the motor M, but may be 180 degrees out of phase. It may be advantageous to measure the BEMF signal from across the driving system  810 , because the signal may be less noisy. If the motor M has higher impedance than the driving system  810 , the motor M may filter out much of the high frequency switching noise. 
       FIG. 9  is a functional block diagram of an analyzer  900  for determining a resonant period according to an embodiment of the present invention. The analyzer may process signals generated from a slope detector  910  of one of the foregoing embodiments. The analyzer  900  may include a controller  921 , a register  922 , a counter  923  and a subtractor  924 . 
     To detect a resonant period of the mechanical system M, the counter  923  may be provided as a free-running counter that increments itself according to a system clock. It may be cleared from time to time by the controller  921 . 
     The controller  921  may monitor signals output from the slope detector  910  and respond to state changes in those signals. For example, when it detects a first transition in the output of the slope detector  910 , the controller  921  may cause a current count value to be stored from the counter  923  to the register  922 . The controller  921  may continue to allow the counter  923  to increment by the CLK signal until it detects a second occurrence of the first transition in the output of the slope detector  910  (e.g., a second occurrence of a high-to-low transition). The controller  921  may cause a count value of the counter  923  and the prior count value as stored in the register  922  both to be read to the subtractor  924 . The subtractor  924  may output a value representing a difference between the two count values, which represents a resonant period of the mechanical system, measured in CLK clock cycles. 
     In alternative embodiments of the present invention, it is also possible to determine the resonant frequency of the VCM by replacing the slope detector described above with a peak detector, zero-crossing detector, ADC (analog-to-digital converter), or an analog front-end such as the one described in U.S. Patent App. Pub. No. 2012/0229264, which is hereby incorporated herein by reference in its entirety. 
     The analyzer  900  illustrated in  FIG. 9  is a functional block diagram only. The components illustrated in  FIG. 9  may be implemented as hardware circuits in an integrated circuit or alternatively may be implemented in software or firmware to be executed by a controller within an integrated circuit. Such implementation differences are immaterial to the present discussion unless described elsewhere herein. 
     It will be appreciated that determination of the resonance frequency may have many other useful applications, including in the control of haptics. The descriptions and illustrations of the embodiments above should be read as exemplary and not limiting. Modifications, variations, and improvements are possible in light of the teachings above and the claims below, and are intended to be within the spirit and scope of the invention.