WO2020055405A1 - Calibrating haptic output for trackpad - Google Patents

Calibrating haptic output for trackpad Download PDF

Info

Publication number
WO2020055405A1
WO2020055405A1 PCT/US2018/050775 US2018050775W WO2020055405A1 WO 2020055405 A1 WO2020055405 A1 WO 2020055405A1 US 2018050775 W US2018050775 W US 2018050775W WO 2020055405 A1 WO2020055405 A1 WO 2020055405A1
Authority
WO
WIPO (PCT)
Prior art keywords
electromagnetic actuator
haptic output
trackpad
motor efficiency
computer system
Prior art date
Application number
PCT/US2018/050775
Other languages
French (fr)
Inventor
Jianxun Wang
Debanjan Mukherjee
Original Assignee
Google Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google Llc filed Critical Google Llc
Priority to PCT/US2018/050775 priority Critical patent/WO2020055405A1/en
Publication of WO2020055405A1 publication Critical patent/WO2020055405A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/016Input arrangements with force or tactile feedback as computer generated output to the user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03547Touch pads, in which fingers can move on a surface

Definitions

  • This document relates, generally, to calibrating haptic output for a trackpad.
  • Some electronic devices are designed to provide haptic feedback to the user based on some condition or circumstance, such as that the user activates an input device or that a predefined event occurs in a computer system.
  • the haptic feedback can be implemented in form of one or more electric motors mounted on or inside the electronic device so as to generate physical movement (e.g., in form of vibrations) that is perceptible to the user.
  • Other operations of a computer system may directly correspond to coded logic and therefore have a relatively deterministic behavior.
  • the furnishing of haptic feedback depends on physical motion generated by way of mechanical operation of tangible components, and may therefore be subject to degradation or other unintended changes in behavior over time. From the user's perspective, this may be frustrating or undesirable. For example, in the course of using the system the person may have come to expect a certain experience of the haptic feedback.
  • a method includes: determining, in a computer system, a present motor efficiency parameter for an electromagnetic actuator that is coupled to a trackpad; generating, in the computer system, a first haptic output using the electromagnetic actuator; determining, in the computer system, a current and a voltage of the electromagnetic actuator that are associated with the first haptic output; determining, in the computer system, an estimated haptic output using the determined present motor efficiency parameter, the determined current and the determined voltage; generating, in the computer system, a trackpad driver signal based on the determined estimated haptic output; and generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the generated trackpad driver signal.
  • Implementations can include any or all of the following features.
  • Determining the present motor efficiency parameter comprises measuring a resistance and an inductance of the electromagnetic actuator. Measuring the resistance and the inductance comprises playing a first pilot tone on the electromagnetic actuator, and determining the resistance and the inductance using a transfer function that relates the resistance and the inductance to the voltage and the current using a complex frequency. Measuring the resistance and the inductance further comprises reducing an influence of at least one of a damping of the electromagnetic actuator, or a spring stiffness of the electromagnetic actuator, on the determination of the present motor efficiency parameter. Reducing an influence comprises playing a second pilot tone on the electromagnetic actuator. The second pilot tone has a higher frequency than the first pilot tone.
  • Determining the present motor efficiency parameter comprises updating a velocity determination relating to a moving mass of the electromagnetic actuator. The velocity determination is updated using the determined current and the determined voltage.
  • a method includes: generating, in a computer system, a first haptic output using an electromagnetic actuator coupled to a trackpad, the
  • electromagnetic actuator controlled by a driver operating based on a motor efficiency parameter for the electromagnetic actuator determining, in the computer system, a current and a voltage of the electromagnetic actuator that are associated with the first haptic output; replacing, in the computer system, the motor efficiency parameter in the driver with a present motor efficiency parameter for the electromagnetic actuator, the present motor efficiency parameter based on the determined current and the determined voltage; and generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the present motor efficiency parameter of the driver.
  • Implementations can include any or all of the following features.
  • Replacing the motor efficiency parameter with the present motor efficiency parameter comprises updating a back electromotive force determination relating to the electromagnetic actuator.
  • Replacing the motor efficiency parameter with the present motor efficiency parameter comprises updating a velocity determination relating to a moving mass of the electromagnetic actuator.
  • Generating the first haptic output comprises playing a first pilot tone on the electromagnetic actuator.
  • the method further comprises enhancing, after playing the first pilot tone, an influence of a moving mass of the electromagnetic actuator on the updating of the velocity determination.
  • Enhancing the influence of the moving mass comprises playing a second pilot tone on the electromagnetic actuator, the second pilot tone having a higher frequency than the first pilot tone.
  • a computer system includes: a processor; a memory; an enclosure; a trackpad; an electromagnetic actuator coupled to the trackpad and configured to generate at least first and second haptic outputs; a driver for the electromagnetic actuator, the driver operated based on a motor efficiency parameter for the electromagnetic actuator; a sensing circuit configured to determine a current and a voltage of the electromagnetic actuator that are associated with at least the first haptic output; and a calibration circuit for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
  • the electromagnetic actuator includes a linear resonant actuator.
  • the driver is configured to operate based on a velocity determination that depends on a back electromotive force of the electromagnetic actuator, and wherein the calibration circuit is configured to update the velocity determination of the driver.
  • the velocity determination is updated using the determined current and the determined voltage.
  • the driver is configured to trigger the electromagnetic actuator to play a first pilot tone in generating the first haptic output.
  • the driver is further configured to trigger the electromagnetic actuator to play, after playing the first pilot tone, a second pilot tone that enhances an influence of a moving mass of the electromagnetic actuator on the updating of the driver with the present motor efficiency parameter.
  • FIG. 1 shows a perspective view of an example of a trackpad for a computer system.
  • FIG. 2 shows a top view of the trackpad of FIG. 1.
  • FIG. 3 shows a bottom view of the trackpad of FIG. 1.
  • FIG. 4 shows an example of a cross-section of a trackpad.
  • FIG. 5 schematically shows an example of a computer system that provides closed-loop feedback for haptic output.
  • FIG. 6 shows an example of a system diagram relating to closed-loop feedback for haptic output.
  • FIG. 7 schematically shows an example of a computer system that provides closed-loop feedback for haptic output.
  • FIG. 8 schematically shows an example of a calibration circuit.
  • FIG. 9 shows an example of a method of calibrating haptic output for a trackpad.
  • FIG. 10 shows another example of a method of calibrating haptic output for a trackpad.
  • FIG. 11 shows an example of a computer device and a mobile computer device that can be used to implement the techniques described here.
  • This document describes examples of providing a calibrated haptic output by way of one or more trackpads in a computer system.
  • a closed-loop feedback component can be provided, and the calibration can take into account degradation or other unwanted change.
  • Systems and techniques described herein can provide one or more advantages compared to earlier approaches.
  • a consistency of user experience over the lifetime of a product can be provided.
  • a motor efficiency parameter can be updated over the course of use of a haptic trackpad.
  • Haptic performance drift and/or degradation can be addressed.
  • Haptic output can be provided that is calibrated based on electromagnetic force drift. Closed-loop feedback can be provided for a haptic output system.
  • Haptic output can be configured based on a state of an actuator.
  • FIG. 1 shows a perspective view of an example of a trackpad 100 for a computer system.
  • FIG. 2 shows a top view of the trackpad 100 of FIG. 1.
  • FIG. 3 shows a bottom view of the trackpad 100 of FIG. 1.
  • the trackpad 100 can be used with one or more other examples described herein.
  • the trackpad 100 can be used with various types of computer systems.
  • the trackpad 100 can be used with any of multiple types of electronic devices, including, but not limited to, a laptop computer, a tablet, a smartphone, or a wearable device, and combinations thereof.
  • the trackpad 100 can be used with systems or apparatuses
  • the trackpad 100 can be used for one or more types of input to a computer system.
  • the trackpad 100 can serve as a pointing device regarding a graphical user interface (e.g., as presented on a display).
  • a user can employ the trackpad 100 to move a cursor or other on-screen tool on a presented screen to manipulate one or more items, objects, files, windows, images or other forms of computer content.
  • the user can make an input relating to object selection, object de-selection, typing, editing, deletion, value selection and/or value de-selection regarding one or more screens presented in the graphical user interface.
  • Inputs can be made in one or more ways using the trackpad 100. Inputs can be made by sliding an object (e.g., a fingertip or the tip of a stylus) across the trackpad 100 in a form of gesture. Inputs can be made by pressing an object onto the trackpad 100 (e.g., in what may be called a "click" maneuver) to deflect the trackpad 100 in some direction. In such situations, it can be detected that force is applied to the trackpad 100 and one or more operations can be triggered in response to detecting the force.
  • a Cartesian coordinate system having respective x-, y-, and z-axes is shown for illustrative purposes.
  • the object can be slid across the trackpad 100 in one or both of the x- or y- directions (e.g., in a plane defined by the x- and y-axes).
  • the object pressed onto the trackpad 100 can cause a deflection of at least part of the trackpad 100 in the z-direction (e.g., a direction inward with regard to an electronic device).
  • the trackpad 100 can also or instead be used to provide one or more types of output from the computer system.
  • the trackpad 100 can provide tactile sensation that is perceptible to the user, in order to communicate one or more types of feedback, for example as described in examples below.
  • the trackpad 100 includes a substrate 102 that can form a majority of the physical implementation of the trackpad 100.
  • the substrate 102 can be made of any material having a sufficient stiffness considering the intended input (e.g., sliding or pressing of the object(s)) and/or considering the intended output (e.g., mechanical motion conveyed through the trackpad 100 as part of haptic output to a user).
  • the substrate 102 can be made of metal.
  • the trackpad 100 can include a front surface 104 on the substrate 102.
  • the front surface 104 can face outward (e.g., toward the user) on an electronic device where the trackpad 100 is implemented.
  • the front surface 104 can presently be directed substantially upward).
  • the front surface 104 can include any material that is suitable considering the intended input and/or output.
  • the front surface 104 can include glass, metal, and/or a polymer material.
  • the front surface 104 can provide for touch sensing as part of the exemplary input mentioned above regarding sliding an object in a gesture on the front surface 104.
  • the front surface 104 can include touch-sensitive technology.
  • capacitive and/or resistive touch sensing can be provided in the trackpad 100.
  • the trackpad 100 can include a rear surface 106 on the substrate 102.
  • the rear surface 106 can face inward (e.g., away from the user) on an electronic device where the trackpad 100 is implemented.
  • the front surface 104 can presently be directed substantially downward).
  • the rear surface 106 can be the location where some functional components of the trackpad 100 are installed, for example as will be described.
  • the trackpad 100 can include one or more components of circuitry in order to perform input and/or output operations.
  • a printed circuit board (PCB) 108 is positioned on the rear surface 106.
  • the PCB 108 can include components or other circuitry responsible for performing one or more functions relating to the trackpad 100.
  • the PCB 108 can include a microcontroller that manages haptic output.
  • the PCB 108 can include a driver that generates the signal(s) that trigger the generation of the haptic output.
  • the trackpad 100 can include one or more components configured to generate output. Haptic output is generated using the trackpad 100. In some implementations, the trackpad 100 can provide haptic output. For example, the haptic output can be provided as a feedback to a user corresponding to the performance or non-performance of one or more operations, and/or corresponding to some particular state of the computer system.
  • an actuator 110 is positioned on the trackpad 100. For example, the actuator 110 can be mounted to the rear surface 106.
  • the actuator 110 can operate according to one or more principles of physics to generate haptic output that is perceptible to a user.
  • the actuator 110 can be an electromagnetic actuator.
  • the actuator 110 can be a linear resonant actuator (LRA) in which electromagnetic interaction between a coil and a magnet causes a certain mass (sometimes referred to as the moving mass) to gain velocity and be displaced. Reciprocal motion can be accomplished and can provide a vibrating sensation through the haptic output.
  • LRA linear resonant actuator
  • the actuator 110 can operate according to one or more axes that can be, but are not necessarily, aligned with the respective x-, y-, and z-axes of the shown coordinate system.
  • the actuator 110 is a multi-axis actuator and can provide haptic output in two or more axes simultaneously or sequentially.
  • the actuator 110 is a single-axis actuator.
  • some haptics systems have been provided with predefined open- loop driving signals.
  • an actuator may be driven using substantially the same signal over the lifespan of the product where the actuator is implemented.
  • the performance of an actuator may degrade over such a lifespan.
  • a mechanical structure can be subject to wear, or the product can be involved in accidents such as being dropped to the ground.
  • the actuator continues to operate it may no longer deliver the same haptic output when driven by the same predefined open-loop driving signals. As such, the user's experience of the product can suffer as a result.
  • the trackpad 100 can include a plate 112 that can be involved in detecting a click or another force input on the trackpad 100.
  • the plate 112 can serve as, or have mounted thereon, a coil that is involved in detecting deflection of the trackpad 100 as a result of applied force.
  • the trackpad 100 can include a spring 114 that is involved in the suspension of the substrate 102 in its operating position.
  • the spring 114 facilitates the detection of force applied to the front surface 104 by way of allowing deflection of the substrate 102.
  • the spring 114 can allow the substrate 102 to be deflected in the z-direction.
  • One or more damping materials can be provided for the motion/deflection of the trackpad 100.
  • silicone pads can be provided on the rear surface 106.
  • the silicone pads can be covered by an over-molded plastic 116.
  • the trackpad 100 can have one or more structures for mounting the trackpad 100 to a computer system such as an electronic device.
  • the trackpad 100 has structures 118 that can facilitate assembly of the trackpad 100 to a housing or another part of such system.
  • the structure 118 can be mounted on respective opposite edges of the substrate 102.
  • FIG. 4 shows an example of a cross-section of a trackpad 400.
  • the trackpad 400 can be used with one or more other examples described herein.
  • the trackpad 400 includes a housing 402.
  • the housing 402 contains the components that facilitate detection of gestures performed on, and/or force applied to, the trackpad 400.
  • the trackpad 400 can be a distinct component configured for installation in a computer system such as an electronic device.
  • the trackpad 400 can include one or more structures for mounting the trackpad 400 to a computer system (e.g., a laptop computer).
  • the trackpad 400 includes a trackpad surface 406 which can be employed by the user to make inputs using the trackpad 400. In response to such input, and/or based on an event defined in the system, the trackpad 400 can provide tactile output perceptible by the user by way of the trackpad 400. For example, haptic output can be provided at the trackpad surface 406.
  • the trackpad 400 can include one or more mechanical components and one or more electromagnetic components that can facilitate haptic output.
  • a mechanical component 408 is provided in the housing 402.
  • the mechanical component 408 can include at least one flexure configured to be deformed (e.g., elastically deformed) as part of an operation of the trackpad 400.
  • At least one coil 410 and at least one magnet 412 are provided in the housing.
  • a gap 414 here separate the coil 410 and the magnet 412 from each other.
  • Electromagnetic interaction between the coil 410 and the magnet 412 can cause mechanical motion of at least one aspect of the trackpad 400.
  • the magnet 412 can be electromagnetically triggered to move relative to the coil 410, with a remainder of the housing 402 remaining essentially stationary.
  • Such moving component is sometimes referred to as a moving mass.
  • the magnet 412 can be considered the moving mass of the trackpad 400.
  • the moving mass can impart haptic output to another aspect of the trackpad 400, including, but not limited, to the trackpad surface 406.
  • FIG. 5 schematically shows an example of a computer system 500 that provides closed-loop feedback for haptic output.
  • the computer system 500 can be used with one or more other examples described herein.
  • the computer system 500 can be implemented according to one or more examples described with reference to FIG. 11 below.
  • Components of the computer system 500 can operate identically or similarly to corresponding components described in other examples herein.
  • One or more of the components of the computer system 500 can be implemented as separate unit, or as part of an integrated unit together with at least one component.
  • the computer system 500 includes a force/touch sensing component 502.
  • the force/touch sensing component 502 facilitates the user making inputs by either making a gesture (e.g., by sliding an object along the surface) or by applying force (e.g., by pressing with an object).
  • the force/touch sensing component 502 is coupled to one or more other aspects of the computer system 500, and such input(s) to the force/touch sensing component 502 can trigger generating of at least one signal 504.
  • the signal 504 represents, or may otherwise characterize, the gesture and/or force that was input using the force/touch sensing component 502.
  • the computer system 500 includes a microcontroller 506.
  • microcontroller 506 includes at least: one or more processor cores, one or more memories, and one or more input/output components that allow the microcontroller 506 to communicate with other aspects of the computer system 500.
  • the microcontroller 506 includes at least: one or more processor cores, one or more memories, and one or more input/output components that allow the microcontroller 506 to communicate with other aspects of the computer system 500.
  • the processor cores includes at least: one or more processor cores, one or more memories, and one or more input/output components that allow the microcontroller 506 to communicate with other aspects of the computer system 500.
  • the microcontroller 506 includes at least: one or more processor cores, one or more memories, and one or more input/output components that allow the microcontroller 506 to communicate with other aspects of the computer system 500.
  • the microcontroller 506 includes at least: one or more processor cores, one or more memories, and one or more input/output components that allow the microcontroller 506 to communicate with other aspects of the computer system 500
  • microcontroller 506 is implemented as part of a PCB in an electronic device.
  • the microcontroller 506 can be mounted on a trackpad that is configured for providing haptic output.
  • the microcontroller 506 can be characterized as an "always-on processor.”
  • the microcontroller 506 can always be receptive to inputs using the force/touch sensing component 502 regardless of the state of the computer system 500 or the state of the electronic device where the computer system 500 may be implemented.
  • the microcontroller 506 can perform functions regarding the control and provision of haptic output.
  • the microcontroller 506 can receive closed-loop feedback about the haptic output and take into account the closed-loop feedback in controlling how the haptic output is generated.
  • the microcontroller 506 can receive a determined estimated haptic output and/or define a target haptic output to be generated.
  • the microcontroller 506 can be calibrated based on a change in motor efficiency.
  • the computer system 500 includes an actuator sub-system 508 that includes an electromagnetic actuator 510 and a driver 512 coupled to the electromagnetic actuator 510 .
  • the actuator sub-system 508 can be coupled to the microcontroller 506 (e.g., by one or more bus connections) and can be configured for providing haptic output.
  • electromagnetic actuator 510 is coupled to a trackpad (see, e.g., trackpad 100 in FIGS. 1-3) and can be configured to undergo mechanical motion that impacts the trackpad so as to be perceptible to a user.
  • the electromagnetic actuator 510 can be a linear resonant actuator.
  • the electromagnetic actuator 510 operates based on at least one trackpad driver signal 514 that the driver 512 provides to the electromagnetic actuator 510.
  • the trackpad driver signal 514 includes one or more electromagnetic waveforms that cause current(s) to flow through, and voltage(s) to be applied across, the electromagnetic actuator 510.
  • the driver 512 can include one or more circuits and/or other components to control the electromagnetic actuator 510.
  • the microcontroller 506 can trigger the driver 512 to perform operations.
  • the microcontroller 506 can be configured to trigger the driver 512 to generate the trackpad driver signal 514 and to provide the trackpad driver signal 514 to the electromagnetic actuator 510.
  • the operation of the driver 512 can be facilitated by at least one digital signal processor 516.
  • the DSP 516 for the driver 512 can be mounted on the trackpad.
  • the DSP 516 can be implemented as part of the PCB 108 (FIG. 1).
  • the DSP 516 can be coupled to the microcontroller 506, for example by a bus connection.
  • the DSP 516 can instruct the driver 512 as to the trackpad driver signal 514 that is to be generated, and the driver 512 executes that instruction by controlling the operation of the electromagnetic actuator 510 in accordance with the trackpad driver signal 514.
  • the DSP 516 can be configured to receive a definition of haptic output and a determination of acceleration.
  • the DSP 516 can determine a difference between the defined target haptic output and the determined acceleration, and generate the trackpad driver signal 514 based on the determined difference.
  • the computer system 500 can include a voltage/current sensing component (VCS) 518.
  • VCS voltage/current sensing component
  • the VCS 518 is electrically coupled to the electromagnetic actuator 510 so as to detect at least one of voltage or current of the actuator as haptic output is being provided through the trackpad.
  • the VCS 518 can be electrically connected to the driver 512.
  • the driver 512 can be part of the VCS 518.
  • the driver 512 and the VCS 518 can both be implemented on the trackpad (e.g., as part of the PCB 108 in FIG.
  • the VCS 518 can be coupled to the microcontroller 506, for example by a bus connection.
  • the VCS 518 generates at least one signal 520 that can represent the measured voltage and/or current.
  • the signal 520 can be received by the microcontroller 506 directly or indirectly.
  • the microcontroller 506 can use the signal 520 from the VCS 518 as closed- loop feedback regarding provided haptic output.
  • the VCS 518 can be closed- loop feedback regarding provided haptic output.
  • microcontroller 506 can determine an estimated haptic output based on the signal 520.
  • the determined estimated haptic output corresponds to a measurement or an observation of the state of the electromagnetic actuator 510.
  • the microcontroller 506 can generate a signal 522 to the actuator sub-system 508.
  • the signal 522 provides a determined estimated haptic output and a defined target haptic output to the DSP 516 of the driver 512.
  • the DSP 516 can determine a difference between the determined estimated haptic output and the defined target haptic output, and base the trackpad driver signal 514 on the determined difference.
  • the microcontroller 506 can provide the signal 522 to trigger the driver 512 to generate the trackpad driver signal 514. Particularly, the microcontroller 506 can first generate the signal 522 to trigger the actuator sub-system 508 to produce a first haptic output.
  • the VCS 518 can provide closed-loop feedback of the first haptic output to the microcontroller 506 by the signal 520, and the microcontroller 506 can determine an estimated haptic output based thereon, for example as described below. In some
  • determining the estimated haptic output can include estimating a performance of the electromagnetic actuator 510.
  • the performance estimation can reflect whether the electromagnetic actuator 510 has undergone degradation or other unintended change in one or more respects.
  • the microcontroller 506 can then provide an updated instance of the signal 522, based on the closed-loop feedback, to trigger the driver 512 to generate an updated instance of the trackpad driver signal 514.
  • the updated instance of the trackpad driver signal 514 can cause greater current and/or voltage, or current/voltage having a different waveform, to be applied to the electromagnetic actuator 510. That is, second haptic output produced based on the updated instance of the trackpad driver signal 514 can provide the advantage that the haptic output reduces or eliminates the effect of the particular state of the electromagnetic actuator 510.
  • a back electromotive force can be generated when relative motion occurs between a driving coil and one or more magnets.
  • bEMF voltage can be generated upon relative motion between the coil 410 (FIG. 4) and the magnet 412.
  • the bEMF voltage is in series with and opposes the originally applied voltage.
  • its amplitude is proportional to the relative motion between the coil(s) and the magnet(s).
  • the bEMF voltage can be used to monitor behavior and/or performance of the actuator over some time period, including, but not limited to, the lifetime of the product.
  • the bEMF voltage can be determined as follows:
  • V mon is a monitored voltage of the actuator
  • R is a resistance of the motor (e.g., as measured by the driver)
  • l mon is a monitored current of the actuator
  • L is an inductance of the motor (e.g., as measured by the driver)
  • d/ TM 07 is a rate of change in the monitored current
  • a velocity Vel of the moving mass (relative to the stator of the actuator) can be determined according to the following velocity determination:
  • k motor is a motor efficiency parameter.
  • the motor efficiency parameter k motor IS sometimes referred to as a "motor constant,” but is may be subject to unintended change, for example as described herein, and may therefore not be constant over some period of time.
  • An initial value of the motor efficiency parameter k motor can be determined as some stage of manufacturing or assembly relating to the actuator, such as in a factory.
  • a sensing circuit e.g., the VCS 518 in FIG. 5
  • the velocity of the trackpad can be determined, e.g., by a closed-loop feedback circuit 524 implemented by the microcontroller 506.
  • the closed-loop feedback circuit 524 takes into account the voltage and/or current sensed by the VCS 518 as represented by the signal 520, and can determine an estimated haptic feedback that is provided to the driver 512 by the signal 522.
  • the above determination of the velocity of the moving mass can be based on the premise that one or more characteristics of the electromagnetic actuator remain essentially unchanged over time. However, motor efficiency can degrade.
  • the housing of the trackpad e.g., the housing 402 in FIG. 2
  • the gap between a moving magnet and a coil e.g., the gap 414 in FIG. 4
  • magnet demagnetization e.g., of the magnet 412 in FIG. 4
  • an electromagnetic actuator can have a different motor efficiency as a result of one or more changes.
  • motor efficiency parameter k motor can be different after the change compared to before. As a result, the above determination of the velocity of the moving mass that depends on the motor efficiency parameter k motor may no longer be accurate.
  • the computer system 500 can be calibrated to address the above and/or other issues. Calibration can be performed by a calibration circuit 526.
  • the calibration circuit 526 can be implemented by the microcontroller 506. In some
  • the determination of the bEMF voltage can be updated based on newly determined or otherwise obtained information.
  • the determination of the velocity of the trackpad can be updated so as to take in an updated or adjusted motor efficiency parameter kmotor- F° r example, a motor efficiency parameter k motor can be replaced with a present motor efficiency parameter k motor .
  • the motor efficiency parameter k motor can be updated based on a determination of the resistance and inductance of the electromagnetic actuator. For example, such a determination can be done based on the monitoring of voltage and/or current of the electromagnetic actuator that is done as part of the closed-loop feedback process.
  • the computer system 500 can be implemented in or on an enclosure 528.
  • the enclosure 528 provides an exterior surface that can expose some or all of the computer system 500 to a user.
  • the enclosure 528 can be a laptop enclosure.
  • the enclosure 528 can be a tablet enclosure.
  • the computer system 500 is an example of a computer system that includes: a processor (e.g., processor 1102 in FIG. 11); a memory (e.g., memory 1104 in FIG. 11); an enclosure (e.g., the enclosure 528 in FIG. 5); a trackpad (e.g., the trackpad 100 in FIG. 1); an electromagnetic actuator (e.g., the electromagnetic actuator 510 in FIG. 5) coupled to the trackpad and configured to generate at least first and second haptic outputs; a driver (e.g., the driver 512 in FIG.
  • a processor e.g., processor 1102 in FIG. 11
  • a memory e.g., memory 1104 in FIG. 11
  • an enclosure e.g., the enclosure 528 in FIG. 5
  • a trackpad e.g., the trackpad 100 in FIG. 1
  • an electromagnetic actuator e.g., the electromagnetic actuator 510 in FIG. 5
  • a driver e.g., the driver 512 in FIG.
  • the driver including a motor efficiency parameter for the electromagnetic actuator (e.g., the motor efficiency parameter k motor ) a sensing circuit (e.g., the VCS 518 in FIG. 5) configured to determine a current and a voltage of the electromagnetic actuator that are associated with at least the first haptic output; and a calibration circuit (e.g., the calibration circuit 526) for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the
  • electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
  • the computer system 500 is an example of an implementation that can be used to perform a method that includes: determining, in a computer system (e.g., by the microcontroller 506 in FIG. 5), a present motor efficiency parameter for an electromagnetic actuator (e.g., the electromagnetic actuator 510 in FIG. 5) that is coupled to a trackpad (e.g., the trackpad 100 in FIG. 1).
  • the method includes generating, in the computer system, a first haptic output using the electromagnetic actuator.
  • the method includes determining, in the computer system (e.g., by the VCS 518 in FIG. 5), a current and a voltage of the
  • the method includes determining, in the computer system (e.g., by the microcontroller 506 in FIG. 5), an estimated haptic output using the determined present motor efficiency parameter, the determined current and the determined voltage.
  • the method includes generating, in the computer system (e.g., by the driver 512 in FIG. 5), a trackpad driver signal (e.g., the trackpad driver signal 514 in FIG. 5) based on the determined estimated haptic output.
  • the method includes generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the generated trackpad driver signal.
  • FIG. 6 shows an example of a system diagram 600 relating to closed-loop feedback for haptic output.
  • the system diagram 600 can be implemented using one or more examples described with reference to FIG. 11.
  • the system diagram 600 can be used with one or more other examples described herein.
  • the system diagram 600 includes an input 602.
  • the input 602 corresponds to a voltage that a driver applies to an electromagnetic actuator.
  • the input 602 can be applied to generate haptic output using the electromagnetic actuator.
  • the system diagram 600 includes an operation 604 involving the input 602.
  • the operation 604 can relate to applying closed-loop feedback so as to control the generation of a trackpad driver signal.
  • the system diagram 600 includes an electrical circuit 606.
  • the electrical circuit 606 involves a conversion from a driving voltage to a current in a coil.
  • the electrical circuit 606 can correspond to a conversion where the current is proportional to the driving voltage according to a factor
  • L is the inductance of the electromagnetic actuator
  • s is a complex frequency
  • R is the resistance of the electromagnetic actuator.
  • the electrical circuit 606 can represent an aspect of a haptic feedback system that may be robust and generally not subject to significant change over time.
  • the inductance L and the resistance R can be measured in the field. That is, the resistance R that is used in the bEMF calculation described herein can also be measured in the field.
  • the system diagram 600 includes actuator mechanics 608.
  • a current / from the electrical circuit 606 can be applied to the actuator mechanics 608.
  • actuator mechanics 608 are involved in the mechanical motion that produces haptic output, and depend on mechanical aspects of an electromagnetic actuator, including, but not limited to, damping and stiffness.
  • a displacement x of a moving mass in the actuator mechanics 608 can be proportional to the current / from the electrical circuit 606 according to a factor
  • k motor is a motor efficiency parameter
  • m is a moving mass (e.g., in an LRA)
  • s is a complex frequency
  • c is a damping coefficient
  • A is a spring constant.
  • the damping coefficient and the spring constant relate to mechanical aspects of the electromagnetic actuator (e.g., compare with the mechanical component 408 in FIG. 4.
  • the system diagram 600 includes an output 610 that here includes the moving mass being displaced by a distance x.
  • the spring damping system driven by an electromechanical motor can be characterized using the following:
  • the electrical circuit with a bEMF reaction force can be characterized using the following:
  • V drive ( Rl(f) + LI(t) + V bEMF ,
  • V drive (t) is the driving voltage
  • R is the resistance
  • /(t) is the current
  • L is the inductance
  • /(t) is the rate of change in the current
  • V bEMF is the bEMF voltage
  • the motor efficiency parameter k motor can be considered as being involved in both the actuator and in the sensing of the provided haptic output.
  • the motor efficiency parameter affects how efficient the motor is.
  • the motor efficiency parameter can be used in converting a driving current to a driving force (e.g., an actuator mode), and/or to convert bEMF to velocity (e.g., a sensor mode).
  • the actuator mode can be characterized using the following:
  • F(t) is the applied force
  • k motor is the motor efficiency parameter
  • /(t) is the current
  • the sensor mode moreover, mode can be characterized using the following:
  • V bEMF is the bEMF voltage
  • k motor is the motor efficiency parameter
  • x(t) is the velocity of the moving mass
  • the electromagnetic actuator can be characterized by an actuator model that reflects motor efficiency.
  • the actuator model can be expressed as: where m is the moving mass, s is the complex frequency, c is the damping coefficient, k is the spring constant, X (s) is the displacement of the moving mass, k motor is the motor efficiency parameter, I(s) is the current, F(s) is the voltage, R is the resistance, and L is the inductance.
  • the system diagram 600 includes an operation 612 where the displacement x of the moving mass is multiplied by the complex frequency s to obtain the velocity of the moving mass. That is, if the motor efficiency parameter k motor were constant, the constant and the bEMF voltage would be used to calculate the velocity.
  • the system diagram 600 includes a determination 614 that depends on a velocity, x, and on the motor efficiency parameter k motor .
  • the determination 614 can be provided with a calibration 616.
  • the system diagram 600 includes a signal 618 from the determination 614 that provides a bEMF voltage V bEMF .
  • the bEMF voltage V bEMF reflects a driving voltage determined with the benefit of closed-loop feedback.
  • the bEMF voltage V bEMF can be provided to the operation 604.
  • the operation 604 can provide that the current / from the electrical circuit 606 is adapted so as to provide the intended haptic output based on the closed-loop feedback. That is, the transform 612, determination 614 and bEMF voltage V bEMF can correspond to the closed-loop feedback in the system diagram 600.
  • the motor efficiency parameter k motor may change over time, and that the displacement can depend on the motor efficiency parameter. Because the motor efficiency parameter may change, the determination 614 that depends on the velocity and produces the bEMF voltage V bEMF may no longer be robust.
  • the calibration 616 involves replacing the motor efficiency parameter k motor with a present motor efficiency parameter k motor and can address this or other situations.
  • the haptic output can be characterized using:
  • FIG. 7 schematically shows an example of a computer system 700 that provides closed-loop feedback for haptic output.
  • FIG. 8 schematically shows an example of a calibration circuit 800.
  • the computer system 700 and/or the calibration circuit 800 can be implemented using one or more examples described with reference to FIG. 11.
  • the computer system 700 and/or the calibration circuit 800 can be used with one or more other examples described herein.
  • Components of the computer system 700 and/or the calibration circuit 800 can serve the same or similar roles as corresponding components in other examples described herein.
  • the computer system 700 includes an actuator 702 that is controlled using a driver 704.
  • the driver 704 includes a sensing circuit that performs voltage sensing 708 and current sensing 710 of the actuator 702.
  • the actuator 702 is an electromagnetic linear resonant actuator.
  • the computer system 700 includes driving inputs 712 of the driver 704 that are applied to the actuator 702.
  • the computer system 700 includes a closed-loop feedback control 714 that allows the voltage sensing 708 and current sensing 710 to be taken into account when the driving inputs 712 are controlling the actuator 702.
  • the computer system 700 includes a calibration circuit 716 that updates a motor efficiency parameter used in the closed-loop feedback control 714.
  • a pilot tone can be played on the actuator 702.
  • the calibration circuit 800 can include a pilot tone generator circuit 802 that generates a first pilot tone to serve as the basis for calibration.
  • the first pilot tone can be on the order of lkHz.
  • the voltage and current can be monitored.
  • the first pilot tone can be played as part of generating haptic output using the actuator 702.
  • the pilot tone generator circuit 802 can cause a driver to apply the drive voltages corresponding to the first pilot tone.
  • a resistance and an inductance of the actuator 702 can be calculated using a transfer function between monitored current and monitored voltage, such as (*),
  • the calibration circuit 800 can include a resistance/inductance calculation circuit 804 that determines values fori? and /. based on the first pilot tone that was supplied to the actuator 702.
  • the resistance/inductance calculation circuit 804 can obtain corresponding monitored current and voltage values and relate them to each other so as to determine the resistance and the inductance.
  • a second pilot tone can be played on the actuator 702. In some implementations, this can be done using the pilot tone generator circuit 802.
  • the second pilot tone can have a significantly higher frequency than the first pilot tone.
  • the second pilot tone can be one or more orders of magnitude higher frequency than the first pilot tone.
  • the second pilot tone can be about lOkHz.
  • the pilot tone generator circuit 802 can cause a driver to apply the drive voltages corresponding to the second pilot tone.
  • the relationship (*) contains parameters such as the damping coefficient (c) and the spring constant (k) that may not be known, or that may be preferable to eliminate for another reason. In some implementations, this can be done by enhancing the significance of a term that depends on the moving mass, such as the ms 2 term in the denominator of the relationship (*).
  • the calibration circuit 800 can include a mass influence enhancement circuit 806 that correlates the monitored current and voltage from the second pilot tone and uses the above-determined resistance and the inductance in calculating a value for the motor efficiency parameter k motor . Such a value can then be used in one or more calibration processes.
  • an existing motor efficiency parameter value in one or more relationships described herein can be replaced by, or updated to, a newly determined motor efficiency parameter value.
  • Measuring the resistance and the inductance can conversely include reducing an influence of at least one of a damping (e.g., the damping coefficient) of the electromagnetic actuator, or a spring stiffness (spring constant) of the electromagnetic actuator, on the determination of the motor efficiency parameter.
  • Their influence can be reduced by the higher second pilot tone because neither of these terms has a frequency dependency as great as that of the moving-mass term (multiplied by s 2 ).
  • the motor efficiency parameter k motor may change relatively slowly.
  • the motor efficiency parameter k motor may be updated at regular intervals. For example, the calibration and update can be done on the order of once a week, or once a day.
  • the computer system 700 is an example of a computer system that includes: a processor (e.g., processor 1102 in FIG. 11); a memory (e.g., memory 1104 in FIG. 11); a trackpad (e.g., the trackpad 100 in FIGS.
  • a processor e.g., processor 1102 in FIG. 11
  • a memory e.g., memory 1104 in FIG. 11
  • a trackpad e.g., the trackpad 100 in FIGS.
  • an electromagnetic actuator e.g., the actuator 702 coupled to the trackpad and configured to generate at least first and second haptic outputs
  • a driver e.g., the driver 704 for the electromagnetic actuator, the driver operated based on a motor efficiency parameter for the electromagnetic actuator
  • a sensing circuit e.g., the sensing circuit 706 configured to determine a current and a voltage of the electromagnetic actuator that are associated with at least the first haptic output
  • a calibration circuit e.g., the calibration circuit 716) for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the
  • electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
  • FIG. 9 shows an example of a method 900 of calibrating haptic output for a trackpad.
  • the method 900 can be performed with one or more other examples described herein. More or fewer operations can be performed. Two or more operations can be performed in another order unless otherwise indicated.
  • first haptic output can be generated.
  • the actuator sub system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
  • current and voltage can be determined.
  • the VCS 518 in FIG. 5 can determine current and voltage of the electromagnetic actuator 510.
  • a motor efficiency parameter can be replaced.
  • the calibration circuit 716 in FIG. 7 can replace a motor efficiency parameter used in the system diagram 600.
  • second haptic output based on the present motor efficiency parameter can be generated.
  • the actuator sub-system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
  • FIG. 10 shows another example of a method 1000 of calibrating haptic output for a trackpad.
  • the method 1000 can be performed with one or more other examples described herein. More or fewer operations can be performed. Two or more operations can be performed in another order unless otherwise indicated.
  • a present motor efficiency parameter can be determined.
  • the calibration circuit 716 in FIG. 7 can determine a present motor efficiency parameter for the system diagram 600.
  • first haptic output can be generated.
  • the actuator sub system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
  • current and voltage can be determined.
  • the VCS 518 in FIG. 5 can determine current and voltage of the electromagnetic actuator 510.
  • a trackpad driver signal can be generated.
  • the driver 512 in FIG. 5 can generate the trackpad driver signal 514.
  • second haptic output can be generated.
  • the actuator sub-system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
  • FIG. 11 shows an example of a generic computer device 1100 and a generic mobile computer device 1150, which may be used with the techniques described here.
  • Computing device 1100 is intended to represent various forms of digital computers, such as laptops, desktops, tablets, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other appropriate computing devices.
  • Computing device 1150 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices.
  • the components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
  • the generic computer device 1100 and/or the generic mobile computer device 1150 can be implemented in or on the enclosure 528 in FIG. 5.
  • Computing device 1100 includes a processor 1102, memory 1104, a storage device 1106, a high-speed interface 1108 connecting to memory 1104 and high-speed expansion ports 1110, and a low speed interface 1112 connecting to low speed bus 1114 and storage device 1106.
  • the processor 1102 can be a semiconductor-based processor.
  • the memory 1104 can be a semiconductor-based memory.
  • Each of the components 1102, 1104, 1106, 1108, 1110, and 1112, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 1102 can process instructions for execution within the computing device 1100, including instructions stored in the memory 1104 or on the storage device 1106 to display graphical information for a GUI on an external input/output device, such as display 1116 coupled to high speed interface 1108.
  • an external input/output device such as display 1116 coupled to high speed interface 1108.
  • multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory.
  • multiple computing devices 1100 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
  • the memory 1104 stores information within the computing device 1100.
  • the memory 1104 is a volatile memory unit or units.
  • the memory 1104 is a non-volatile memory unit or units.
  • the memory 1104 may also be another form of computer-readable medium, such as a magnetic or optical disk.
  • the storage device 1106 is capable of providing mass storage for the computing device 1100.
  • the storage device 1106 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
  • a computer program product can be tangibly embodied in an information carrier.
  • the computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine- readable medium, such as the memory 1104, the storage device 1106, or memory on processor 1102.
  • the high speed controller 1108 manages bandwidth-intensive operations for the computing device 1100, while the low speed controller 1112 manages lower bandwidth intensive operations. Such allocation of functions is exemplary only.
  • the high-speed controller 1108 is coupled to memory 1104, display 1116 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 1110, which may accept various expansion cards (not shown).
  • low-speed controller 1112 is coupled to storage device 1106 and low-speed expansion port 1114.
  • the low-speed expansion port which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • input/output devices such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • the computing device 1100 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1120, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 1124. In addition, it may be implemented in a personal computer such as a laptop computer 1122. Alternatively, components from computing device 1100 may be combined with other components in a mobile device (not shown), such as device 1150. Each of such devices may contain one or more of computing device 1100, 1150, and an entire system may be made up of multiple computing devices 1100, 1150 communicating with each other.
  • Computing device 1150 includes a processor 1152, memory 1164, an input/output device such as a display 1154, a communication interface 1166, and a transceiver 1168, among other components.
  • the device 1150 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage.
  • a storage device such as a microdrive or other device, to provide additional storage.
  • Each of the components 1150, 1152, 1164, 1154, 1166, and 1168 are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 1152 can execute instructions within the computing device 1150, including instructions stored in the memory 1164.
  • the processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors.
  • the processor may provide, for example, for coordination of the other components of the device 1150, such as control of user interfaces, applications run by device 1150, and wireless communication by device 1150.
  • Processor 1152 may communicate with a user through control interface 1158 and display interface 1156 coupled to a display 1154.
  • the display 1154 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology.
  • the display interface 1156 may comprise appropriate circuitry for driving the display 1154 to present graphical and other information to a user.
  • the control interface 1158 may receive commands from a user and convert them for submission to the processor 1152.
  • an external interface 1162 may be provided in communication with processor 1152, so as to enable near area communication of device 1150 with other devices. External interface 1162 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
  • the memory 1164 stores information within the computing device 1150.
  • the memory 1164 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units.
  • Expansion memory 1174 may also be provided and connected to device 1150 through expansion interface 1172, which may include, for example, a SIMM (Single In Line Memory Module) card interface.
  • SIMM Single In Line Memory Module
  • expansion memory 1174 may provide extra storage space for device 1150, or may also store applications or other information for device 1150.
  • expansion memory 1174 may include instructions to carry out or supplement the processes described above, and may include secure information also.
  • expansion memory 1174 may be provided as a security module for device 1150, and may be programmed with instructions that permit secure use of device 1150.
  • secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
  • the memory may include, for example, flash memory and/or NVRAM memory, as discussed below.
  • a computer program product is tangibly embodied in an information carrier.
  • the computer program product contains instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine-readable medium, such as the memory 1164, expansion memory 1174, or memory on processor 1152, that may be received, for example, over transceiver 1168 or external interface 1162.
  • Device 1150 may communicate wirelessly through communication interface 1166, which may include digital signal processing circuitry where necessary. Communication interface 1166 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 1168. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 1170 may provide additional navigation- and location- related wireless data to device 1150, which may be used as appropriate by applications running on device 1150.
  • GPS Global Positioning System
  • Device 1150 may also communicate audibly using audio codec 1160, which may receive spoken information from a user and convert it to usable digital information. Audio codec 1160 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1150. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1150.
  • Audio codec 1160 may receive spoken information from a user and convert it to usable digital information. Audio codec 1160 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1150. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1150.
  • the computing device 1150 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 1180. It may also be implemented as part of a smart phone 1182, personal digital assistant, or other similar mobile device.
  • implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • a programmable processor which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer.
  • a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
  • a keyboard and a pointing device e.g., a mouse or a trackball
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • the systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components.
  • the components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
  • LAN local area network
  • WAN wide area network
  • the Internet the global information network
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication network.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

A trackpad's electromagnetic actuator providing haptic feedback can degrade over time and no longer operate at an optimal efficiency level. In order to combat this, a computer system determines a motor efficiency parameter for the actuator and adjusts the haptic output based on an estimation of the current haptic output.

Description

CALIBRATING HAPTIC OUTPUT FOR TRACKPAD
TECHNICAL FIELD
[0001] This document relates, generally, to calibrating haptic output for a trackpad.
BACKGROUND
[0002] Some electronic devices are designed to provide haptic feedback to the user based on some condition or circumstance, such as that the user activates an input device or that a predefined event occurs in a computer system. The haptic feedback can be implemented in form of one or more electric motors mounted on or inside the electronic device so as to generate physical movement (e.g., in form of vibrations) that is perceptible to the user. Other operations of a computer system may directly correspond to coded logic and therefore have a relatively deterministic behavior. The furnishing of haptic feedback, however, depends on physical motion generated by way of mechanical operation of tangible components, and may therefore be subject to degradation or other unintended changes in behavior over time. From the user's perspective, this may be frustrating or undesirable. For example, in the course of using the system the person may have come to expect a certain experience of the haptic feedback.
SUMMARY
[0003] In a first aspect, a method includes: determining, in a computer system, a present motor efficiency parameter for an electromagnetic actuator that is coupled to a trackpad; generating, in the computer system, a first haptic output using the electromagnetic actuator; determining, in the computer system, a current and a voltage of the electromagnetic actuator that are associated with the first haptic output; determining, in the computer system, an estimated haptic output using the determined present motor efficiency parameter, the determined current and the determined voltage; generating, in the computer system, a trackpad driver signal based on the determined estimated haptic output; and generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the generated trackpad driver signal.
[0004] Implementations can include any or all of the following features. Determining the present motor efficiency parameter comprises measuring a resistance and an inductance of the electromagnetic actuator. Measuring the resistance and the inductance comprises playing a first pilot tone on the electromagnetic actuator, and determining the resistance and the inductance using a transfer function that relates the resistance and the inductance to the voltage and the current using a complex frequency. Measuring the resistance and the inductance further comprises reducing an influence of at least one of a damping of the electromagnetic actuator, or a spring stiffness of the electromagnetic actuator, on the determination of the present motor efficiency parameter. Reducing an influence comprises playing a second pilot tone on the electromagnetic actuator. The second pilot tone has a higher frequency than the first pilot tone. Determining the present motor efficiency parameter comprises updating a velocity determination relating to a moving mass of the electromagnetic actuator. The velocity determination is updated using the determined current and the determined voltage.
[0005] In a second aspect, a method includes: generating, in a computer system, a first haptic output using an electromagnetic actuator coupled to a trackpad, the
electromagnetic actuator controlled by a driver operating based on a motor efficiency parameter for the electromagnetic actuator; determining, in the computer system, a current and a voltage of the electromagnetic actuator that are associated with the first haptic output; replacing, in the computer system, the motor efficiency parameter in the driver with a present motor efficiency parameter for the electromagnetic actuator, the present motor efficiency parameter based on the determined current and the determined voltage; and generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the present motor efficiency parameter of the driver.
[0006] Implementations can include any or all of the following features. Replacing the motor efficiency parameter with the present motor efficiency parameter comprises updating a back electromotive force determination relating to the electromagnetic actuator. Replacing the motor efficiency parameter with the present motor efficiency parameter comprises updating a velocity determination relating to a moving mass of the electromagnetic actuator. Generating the first haptic output comprises playing a first pilot tone on the electromagnetic actuator. The method further comprises enhancing, after playing the first pilot tone, an influence of a moving mass of the electromagnetic actuator on the updating of the velocity determination. Enhancing the influence of the moving mass comprises playing a second pilot tone on the electromagnetic actuator, the second pilot tone having a higher frequency than the first pilot tone.
[0007] In a third aspect, a computer system includes: a processor; a memory; an enclosure; a trackpad; an electromagnetic actuator coupled to the trackpad and configured to generate at least first and second haptic outputs; a driver for the electromagnetic actuator, the driver operated based on a motor efficiency parameter for the electromagnetic actuator; a sensing circuit configured to determine a current and a voltage of the electromagnetic actuator that are associated with at least the first haptic output; and a calibration circuit for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
[0008] Implementations can include any or all of the following features. The electromagnetic actuator includes a linear resonant actuator. The driver is configured to operate based on a velocity determination that depends on a back electromotive force of the electromagnetic actuator, and wherein the calibration circuit is configured to update the velocity determination of the driver. The velocity determination is updated using the determined current and the determined voltage. The driver is configured to trigger the electromagnetic actuator to play a first pilot tone in generating the first haptic output. The driver is further configured to trigger the electromagnetic actuator to play, after playing the first pilot tone, a second pilot tone that enhances an influence of a moving mass of the electromagnetic actuator on the updating of the driver with the present motor efficiency parameter.
BRIEF DESCRIPTION OF DRAWINGS
[0009] FIG. 1 shows a perspective view of an example of a trackpad for a computer system.
[0010] FIG. 2 shows a top view of the trackpad of FIG. 1.
[0011] FIG. 3 shows a bottom view of the trackpad of FIG. 1.
[0012] FIG. 4 shows an example of a cross-section of a trackpad.
[0013] FIG. 5 schematically shows an example of a computer system that provides closed-loop feedback for haptic output.
[0014] FIG. 6 shows an example of a system diagram relating to closed-loop feedback for haptic output.
[0015] FIG. 7 schematically shows an example of a computer system that provides closed-loop feedback for haptic output.
[0016] FIG. 8 schematically shows an example of a calibration circuit.
[0017] FIG. 9 shows an example of a method of calibrating haptic output for a trackpad. [0018] FIG. 10 shows another example of a method of calibrating haptic output for a trackpad.
[0019] FIG. 11 shows an example of a computer device and a mobile computer device that can be used to implement the techniques described here.
[0020] Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTION
[0021] This document describes examples of providing a calibrated haptic output by way of one or more trackpads in a computer system. In some implementations, a closed-loop feedback component can be provided, and the calibration can take into account degradation or other unwanted change.
[0022] Systems and techniques described herein can provide one or more advantages compared to earlier approaches. A consistency of user experience over the lifetime of a product can be provided. A motor efficiency parameter can be updated over the course of use of a haptic trackpad. Haptic performance drift and/or degradation can be addressed. Haptic output can be provided that is calibrated based on electromagnetic force drift. Closed-loop feedback can be provided for a haptic output system. Haptic output can be configured based on a state of an actuator.
[0023] FIG. 1 shows a perspective view of an example of a trackpad 100 for a computer system. FIG. 2 shows a top view of the trackpad 100 of FIG. 1. FIG. 3 shows a bottom view of the trackpad 100 of FIG. 1. The trackpad 100 can be used with one or more other examples described herein.
[0024] The trackpad 100 can be used with various types of computer systems. The trackpad 100 can be used with any of multiple types of electronic devices, including, but not limited to, a laptop computer, a tablet, a smartphone, or a wearable device, and combinations thereof. For example, the trackpad 100 can be used with systems or apparatuses
corresponding to the examples described with reference to FIG. 11 below.
[0025] The trackpad 100 can be used for one or more types of input to a computer system. In some implementations, the trackpad 100 can serve as a pointing device regarding a graphical user interface (e.g., as presented on a display). A user can employ the trackpad 100 to move a cursor or other on-screen tool on a presented screen to manipulate one or more items, objects, files, windows, images or other forms of computer content. For example, the user can make an input relating to object selection, object de-selection, typing, editing, deletion, value selection and/or value de-selection regarding one or more screens presented in the graphical user interface.
[0026] Inputs can be made in one or more ways using the trackpad 100. Inputs can be made by sliding an object (e.g., a fingertip or the tip of a stylus) across the trackpad 100 in a form of gesture. Inputs can be made by pressing an object onto the trackpad 100 (e.g., in what may be called a "click" maneuver) to deflect the trackpad 100 in some direction. In such situations, it can be detected that force is applied to the trackpad 100 and one or more operations can be triggered in response to detecting the force. Here, a Cartesian coordinate system having respective x-, y-, and z-axes is shown for illustrative purposes. For example, the object can be slid across the trackpad 100 in one or both of the x- or y- directions (e.g., in a plane defined by the x- and y-axes). As another example, the object pressed onto the trackpad 100 can cause a deflection of at least part of the trackpad 100 in the z-direction (e.g., a direction inward with regard to an electronic device).
[0027] The trackpad 100 can also or instead be used to provide one or more types of output from the computer system. The trackpad 100 can provide tactile sensation that is perceptible to the user, in order to communicate one or more types of feedback, for example as described in examples below.
[0028] The trackpad 100 includes a substrate 102 that can form a majority of the physical implementation of the trackpad 100. The substrate 102 can be made of any material having a sufficient stiffness considering the intended input (e.g., sliding or pressing of the object(s)) and/or considering the intended output (e.g., mechanical motion conveyed through the trackpad 100 as part of haptic output to a user). For example, the substrate 102 can be made of metal.
[0029] The trackpad 100 can include a front surface 104 on the substrate 102. The front surface 104 can face outward (e.g., toward the user) on an electronic device where the trackpad 100 is implemented. For example, when the trackpad 100 is implemented in a laptop computer that is currently being used on a desktop surface, the front surface 104 can presently be directed substantially upward). The front surface 104 can include any material that is suitable considering the intended input and/or output. For example, the front surface 104 can include glass, metal, and/or a polymer material.
[0030] The front surface 104 can provide for touch sensing as part of the exemplary input mentioned above regarding sliding an object in a gesture on the front surface 104. As such, the front surface 104 can include touch-sensitive technology. For example, capacitive and/or resistive touch sensing can be provided in the trackpad 100.
[0031] The trackpad 100 can include a rear surface 106 on the substrate 102. The rear surface 106 can face inward (e.g., away from the user) on an electronic device where the trackpad 100 is implemented. For example, when the trackpad 100 is implemented in a laptop computer that is currently being used on a desktop surface, the front surface 104 can presently be directed substantially downward). The rear surface 106 can be the location where some functional components of the trackpad 100 are installed, for example as will be described.
[0032] The trackpad 100 can include one or more components of circuitry in order to perform input and/or output operations. Here, a printed circuit board (PCB) 108 is positioned on the rear surface 106. The PCB 108 can include components or other circuitry responsible for performing one or more functions relating to the trackpad 100. For example, the PCB 108 can include a microcontroller that manages haptic output. As another example, the PCB 108 can include a driver that generates the signal(s) that trigger the generation of the haptic output.
[0033] The trackpad 100 can include one or more components configured to generate output. Haptic output is generated using the trackpad 100. In some implementations, the trackpad 100 can provide haptic output. For example, the haptic output can be provided as a feedback to a user corresponding to the performance or non-performance of one or more operations, and/or corresponding to some particular state of the computer system. Here, an actuator 110 is positioned on the trackpad 100. For example, the actuator 110 can be mounted to the rear surface 106.
[0034] The actuator 110 can operate according to one or more principles of physics to generate haptic output that is perceptible to a user. In some implementations, the actuator 110 can be an electromagnetic actuator. For example, the actuator 110 can be a linear resonant actuator (LRA) in which electromagnetic interaction between a coil and a magnet causes a certain mass (sometimes referred to as the moving mass) to gain velocity and be displaced. Reciprocal motion can be accomplished and can provide a vibrating sensation through the haptic output.
[0035] The actuator 110 can operate according to one or more axes that can be, but are not necessarily, aligned with the respective x-, y-, and z-axes of the shown coordinate system. In some implementations, the actuator 110 is a multi-axis actuator and can provide haptic output in two or more axes simultaneously or sequentially. In some implementations, the actuator 110 is a single-axis actuator.
[0036] In the part, some haptics systems have been provided with predefined open- loop driving signals. In such an approach, an actuator may be driven using substantially the same signal over the lifespan of the product where the actuator is implemented. However, the performance of an actuator may degrade over such a lifespan. For example, a mechanical structure can be subject to wear, or the product can be involved in accidents such as being dropped to the ground. In such situations, while the actuator continues to operate it may no longer deliver the same haptic output when driven by the same predefined open-loop driving signals. As such, the user's experience of the product can suffer as a result.
[0037] The trackpad 100 can include a plate 112 that can be involved in detecting a click or another force input on the trackpad 100. In some implementations, the plate 112 can serve as, or have mounted thereon, a coil that is involved in detecting deflection of the trackpad 100 as a result of applied force.
[0038] The trackpad 100 can include a spring 114 that is involved in the suspension of the substrate 102 in its operating position. In some implementations, the spring 114 facilitates the detection of force applied to the front surface 104 by way of allowing deflection of the substrate 102. For example, the spring 114 can allow the substrate 102 to be deflected in the z-direction.
[0039] One or more damping materials can be provided for the motion/deflection of the trackpad 100. In some implementations, silicone pads can be provided on the rear surface 106. For example, the silicone pads can be covered by an over-molded plastic 116.
[0040] The trackpad 100 can have one or more structures for mounting the trackpad 100 to a computer system such as an electronic device. In some implementations, the trackpad 100 has structures 118 that can facilitate assembly of the trackpad 100 to a housing or another part of such system. For example, the structure 118 can be mounted on respective opposite edges of the substrate 102.
[0041] FIG. 4 shows an example of a cross-section of a trackpad 400. The trackpad 400 can be used with one or more other examples described herein.
[0042] The trackpad 400 includes a housing 402. In some implementations, the housing 402 contains the components that facilitate detection of gestures performed on, and/or force applied to, the trackpad 400. For example, the trackpad 400 can be a distinct component configured for installation in a computer system such as an electronic device. The trackpad 400 can include one or more structures for mounting the trackpad 400 to a computer system (e.g., a laptop computer).
[0043] The trackpad 400 includes a trackpad surface 406 which can be employed by the user to make inputs using the trackpad 400. In response to such input, and/or based on an event defined in the system, the trackpad 400 can provide tactile output perceptible by the user by way of the trackpad 400. For example, haptic output can be provided at the trackpad surface 406.
[0044] The trackpad 400 can include one or more mechanical components and one or more electromagnetic components that can facilitate haptic output. In some implementations, a mechanical component 408 is provided in the housing 402. For example, the mechanical component 408 can include at least one flexure configured to be deformed (e.g., elastically deformed) as part of an operation of the trackpad 400.
[0045] In some implementations, at least one coil 410 and at least one magnet 412 are provided in the housing. A gap 414 here separate the coil 410 and the magnet 412 from each other. Electromagnetic interaction between the coil 410 and the magnet 412 can cause mechanical motion of at least one aspect of the trackpad 400. For example, the magnet 412 can be electromagnetically triggered to move relative to the coil 410, with a remainder of the housing 402 remaining essentially stationary. Such moving component is sometimes referred to as a moving mass. For example, the magnet 412 can be considered the moving mass of the trackpad 400. The moving mass can impart haptic output to another aspect of the trackpad 400, including, but not limited, to the trackpad surface 406.
[0046] FIG. 5 schematically shows an example of a computer system 500 that provides closed-loop feedback for haptic output. The computer system 500 can be used with one or more other examples described herein. For example, the computer system 500 can be implemented according to one or more examples described with reference to FIG. 11 below. Components of the computer system 500 can operate identically or similarly to corresponding components described in other examples herein. One or more of the components of the computer system 500 can be implemented as separate unit, or as part of an integrated unit together with at least one component.
[0047] The computer system 500 includes a force/touch sensing component 502. In some implementations, the force/touch sensing component 502 facilitates the user making inputs by either making a gesture (e.g., by sliding an object along the surface) or by applying force (e.g., by pressing with an object). The force/touch sensing component 502 is coupled to one or more other aspects of the computer system 500, and such input(s) to the force/touch sensing component 502 can trigger generating of at least one signal 504. For example, the signal 504 represents, or may otherwise characterize, the gesture and/or force that was input using the force/touch sensing component 502.
[0048] The computer system 500 includes a microcontroller 506. The
microcontroller 506 includes at least: one or more processor cores, one or more memories, and one or more input/output components that allow the microcontroller 506 to communicate with other aspects of the computer system 500. In some implementations, the
microcontroller 506 is implemented as part of a PCB in an electronic device. For example, the microcontroller 506 can be mounted on a trackpad that is configured for providing haptic output.
[0049] In some implementations, the microcontroller 506 can be characterized as an "always-on processor." For example, the microcontroller 506 can always be receptive to inputs using the force/touch sensing component 502 regardless of the state of the computer system 500 or the state of the electronic device where the computer system 500 may be implemented.
[0050] The microcontroller 506 can perform functions regarding the control and provision of haptic output. In some implementations, the microcontroller 506 can receive closed-loop feedback about the haptic output and take into account the closed-loop feedback in controlling how the haptic output is generated. For example, the microcontroller 506 can receive a determined estimated haptic output and/or define a target haptic output to be generated. In some implementations, the microcontroller 506 can be calibrated based on a change in motor efficiency.
[0051] The computer system 500 includes an actuator sub-system 508 that includes an electromagnetic actuator 510 and a driver 512 coupled to the electromagnetic actuator 510 . The actuator sub-system 508 can be coupled to the microcontroller 506 (e.g., by one or more bus connections) and can be configured for providing haptic output. The
electromagnetic actuator 510 is coupled to a trackpad (see, e.g., trackpad 100 in FIGS. 1-3) and can be configured to undergo mechanical motion that impacts the trackpad so as to be perceptible to a user. For example, the electromagnetic actuator 510 can be a linear resonant actuator. The electromagnetic actuator 510 operates based on at least one trackpad driver signal 514 that the driver 512 provides to the electromagnetic actuator 510. The trackpad driver signal 514 includes one or more electromagnetic waveforms that cause current(s) to flow through, and voltage(s) to be applied across, the electromagnetic actuator 510. The driver 512 can include one or more circuits and/or other components to control the electromagnetic actuator 510. The microcontroller 506 can trigger the driver 512 to perform operations. The microcontroller 506 can be configured to trigger the driver 512 to generate the trackpad driver signal 514 and to provide the trackpad driver signal 514 to the electromagnetic actuator 510.
[0052] The operation of the driver 512 can be facilitated by at least one digital signal processor 516. The DSP 516 for the driver 512 can be mounted on the trackpad. For example, the DSP 516 can be implemented as part of the PCB 108 (FIG. 1). The DSP 516 can be coupled to the microcontroller 506, for example by a bus connection. The DSP 516 can instruct the driver 512 as to the trackpad driver signal 514 that is to be generated, and the driver 512 executes that instruction by controlling the operation of the electromagnetic actuator 510 in accordance with the trackpad driver signal 514. In some implementations, the DSP 516 can be configured to receive a definition of haptic output and a determination of acceleration. For example, the DSP 516 can determine a difference between the defined target haptic output and the determined acceleration, and generate the trackpad driver signal 514 based on the determined difference.
[0053] The computer system 500 can include a voltage/current sensing component (VCS) 518. The VCS 518 is electrically coupled to the electromagnetic actuator 510 so as to detect at least one of voltage or current of the actuator as haptic output is being provided through the trackpad. The VCS 518 can be electrically connected to the driver 512. For example, the driver 512 can be part of the VCS 518. As another example, the driver 512 and the VCS 518 can both be implemented on the trackpad (e.g., as part of the PCB 108 in FIG.
1). The VCS 518 can be coupled to the microcontroller 506, for example by a bus connection. The VCS 518 generates at least one signal 520 that can represent the measured voltage and/or current. The signal 520 can be received by the microcontroller 506 directly or indirectly.
[0054] The microcontroller 506 can use the signal 520 from the VCS 518 as closed- loop feedback regarding provided haptic output. In some implementations, the
microcontroller 506 can determine an estimated haptic output based on the signal 520. For example, the determined estimated haptic output corresponds to a measurement or an observation of the state of the electromagnetic actuator 510. The microcontroller 506 can generate a signal 522 to the actuator sub-system 508. In some implementations, the signal 522 provides a determined estimated haptic output and a defined target haptic output to the DSP 516 of the driver 512. For example, the DSP 516 can determine a difference between the determined estimated haptic output and the defined target haptic output, and base the trackpad driver signal 514 on the determined difference.
[0055] The microcontroller 506 can provide the signal 522 to trigger the driver 512 to generate the trackpad driver signal 514. Particularly, the microcontroller 506 can first generate the signal 522 to trigger the actuator sub-system 508 to produce a first haptic output. The VCS 518 can provide closed-loop feedback of the first haptic output to the microcontroller 506 by the signal 520, and the microcontroller 506 can determine an estimated haptic output based thereon, for example as described below. In some
implementations, determining the estimated haptic output can include estimating a performance of the electromagnetic actuator 510. For example, the performance estimation can reflect whether the electromagnetic actuator 510 has undergone degradation or other unintended change in one or more respects. The microcontroller 506 can then provide an updated instance of the signal 522, based on the closed-loop feedback, to trigger the driver 512 to generate an updated instance of the trackpad driver signal 514. For example, the updated instance of the trackpad driver signal 514 can cause greater current and/or voltage, or current/voltage having a different waveform, to be applied to the electromagnetic actuator 510. That is, second haptic output produced based on the updated instance of the trackpad driver signal 514 can provide the advantage that the haptic output reduces or eliminates the effect of the particular state of the electromagnetic actuator 510.
[0056] Multiple electronics products, such as in the area of consumer electronics, can be implemented with an electromagnetic-force based actuator to generate haptic output. In some implementations, a back electromotive force (here bEMF voltage) can be generated when relative motion occurs between a driving coil and one or more magnets. For example, bEMF voltage can be generated upon relative motion between the coil 410 (FIG. 4) and the magnet 412. The bEMF voltage is in series with and opposes the originally applied voltage. Moreover, its amplitude is proportional to the relative motion between the coil(s) and the magnet(s). The bEMF voltage can be used to monitor behavior and/or performance of the actuator over some time period, including, but not limited to, the lifetime of the product. The bEMF voltage can be determined as follows:
Figure imgf000012_0001
where Vmon is a monitored voltage of the actuator, R is a resistance of the motor (e.g., as measured by the driver), lmon is a monitored current of the actuator, L is an inductance of the motor (e.g., as measured by the driver), and d/
Figure imgf000012_0002
07 is a rate of change in the monitored current
Anon·
[0057] A velocity Vel of the moving mass (relative to the stator of the actuator) can be determined according to the following velocity determination:
Figure imgf000012_0003
where kmotor is a motor efficiency parameter. The motor efficiency parameter k motor IS sometimes referred to as a "motor constant," but is may be subject to unintended change, for example as described herein, and may therefore not be constant over some period of time. An initial value of the motor efficiency parameter kmotor can be determined as some stage of manufacturing or assembly relating to the actuator, such as in a factory. As such, a sensing circuit (e.g., the VCS 518 in FIG. 5) can monitor the voltage and current of an actuator, which gives the bEMF voltage. Based on this, the velocity of the trackpad can be determined, e.g., by a closed-loop feedback circuit 524 implemented by the microcontroller 506. In some implementations, the closed-loop feedback circuit 524 takes into account the voltage and/or current sensed by the VCS 518 as represented by the signal 520, and can determine an estimated haptic feedback that is provided to the driver 512 by the signal 522.
[0058] The above determination of the velocity of the moving mass can be based on the premise that one or more characteristics of the electromagnetic actuator remain essentially unchanged over time. However, motor efficiency can degrade. As another example, the housing of the trackpad (e.g., the housing 402 in FIG. 2) can be deformed through accidentally dropping the electronic device. As another example, the gap between a moving magnet and a coil (e.g., the gap 414 in FIG. 4) can change. As another example, magnet demagnetization (e.g., of the magnet 412 in FIG. 4) can occur.
[0059] These and/or other changes can affect the above mentioned determination of the velocity of the trackpad. In some implementations, an electromagnetic actuator can have a different motor efficiency as a result of one or more changes. For example, motor efficiency parameter kmotor can be different after the change compared to before. As a result, the above determination of the velocity of the moving mass that depends on the motor efficiency parameter kmotor may no longer be accurate.
[0060] The computer system 500 can be calibrated to address the above and/or other issues. Calibration can be performed by a calibration circuit 526. For example, the calibration circuit 526 can be implemented by the microcontroller 506. In some
implementations, the determination of the bEMF voltage can be updated based on newly determined or otherwise obtained information. The determination of the velocity of the trackpad can be updated so as to take in an updated or adjusted motor efficiency parameter kmotor- F°r example, a motor efficiency parameter kmotor can be replaced with a present motor efficiency parameter kmotor.
[0061] In some implementations, the motor efficiency parameter kmotor can be updated based on a determination of the resistance and inductance of the electromagnetic actuator. For example, such a determination can be done based on the monitoring of voltage and/or current of the electromagnetic actuator that is done as part of the closed-loop feedback process.
[0062] The computer system 500 can be implemented in or on an enclosure 528. In some implementations, the enclosure 528 provides an exterior surface that can expose some or all of the computer system 500 to a user. For example, the enclosure 528 can be a laptop enclosure. As another example, the enclosure 528 can be a tablet enclosure.
[0063] The computer system 500 is an example of a computer system that includes: a processor (e.g., processor 1102 in FIG. 11); a memory (e.g., memory 1104 in FIG. 11); an enclosure (e.g., the enclosure 528 in FIG. 5); a trackpad (e.g., the trackpad 100 in FIG. 1); an electromagnetic actuator (e.g., the electromagnetic actuator 510 in FIG. 5) coupled to the trackpad and configured to generate at least first and second haptic outputs; a driver (e.g., the driver 512 in FIG. 5) for the electromagnetic actuator, the driver including a motor efficiency parameter for the electromagnetic actuator (e.g., the motor efficiency parameter kmotor) a sensing circuit (e.g., the VCS 518 in FIG. 5) configured to determine a current and a voltage of the electromagnetic actuator that are associated with at least the first haptic output; and a calibration circuit (e.g., the calibration circuit 526) for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the
electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
[0064] The computer system 500 is an example of an implementation that can be used to perform a method that includes: determining, in a computer system (e.g., by the microcontroller 506 in FIG. 5), a present motor efficiency parameter for an electromagnetic actuator (e.g., the electromagnetic actuator 510 in FIG. 5) that is coupled to a trackpad (e.g., the trackpad 100 in FIG. 1). The method includes generating, in the computer system, a first haptic output using the electromagnetic actuator. The method includes determining, in the computer system (e.g., by the VCS 518 in FIG. 5), a current and a voltage of the
electromagnetic actuator that are associated with the first haptic output. The method includes determining, in the computer system (e.g., by the microcontroller 506 in FIG. 5), an estimated haptic output using the determined present motor efficiency parameter, the determined current and the determined voltage. The method includes generating, in the computer system (e.g., by the driver 512 in FIG. 5), a trackpad driver signal (e.g., the trackpad driver signal 514 in FIG. 5) based on the determined estimated haptic output. The method includes generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the generated trackpad driver signal.
[0065] FIG. 6 shows an example of a system diagram 600 relating to closed-loop feedback for haptic output. The system diagram 600 can be implemented using one or more examples described with reference to FIG. 11. The system diagram 600 can be used with one or more other examples described herein.
[0066] The system diagram 600 includes an input 602. In some implementations, the input 602 corresponds to a voltage that a driver applies to an electromagnetic actuator. For example, the input 602 can be applied to generate haptic output using the electromagnetic actuator.
[0067] The system diagram 600 includes an operation 604 involving the input 602. For example, the operation 604 can relate to applying closed-loop feedback so as to control the generation of a trackpad driver signal.
[0068] The system diagram 600 includes an electrical circuit 606. In some implementations, the electrical circuit 606 involves a conversion from a driving voltage to a current in a coil. For example, the electrical circuit 606 can correspond to a conversion where the current is proportional to the driving voltage according to a factor
1
(Ls+Rf
where L is the inductance of the electromagnetic actuator, s is a complex frequency, and R is the resistance of the electromagnetic actuator. The electrical circuit 606 can represent an aspect of a haptic feedback system that may be robust and generally not subject to significant change over time. The inductance L and the resistance R can be measured in the field. That is, the resistance R that is used in the bEMF calculation described herein can also be measured in the field.
[0069] The system diagram 600 includes actuator mechanics 608. A current / from the electrical circuit 606 can be applied to the actuator mechanics 608. In some
implementations, actuator mechanics 608 are involved in the mechanical motion that produces haptic output, and depend on mechanical aspects of an electromagnetic actuator, including, but not limited to, damping and stiffness. For example, a displacement x of a moving mass in the actuator mechanics 608 can be proportional to the current / from the electrical circuit 606 according to a factor
kmo tor
ms2+cs+k.,
where kmotor is a motor efficiency parameter, m is a moving mass (e.g., in an LRA), s is a complex frequency, c is a damping coefficient, and A: is a spring constant. The damping coefficient and the spring constant relate to mechanical aspects of the electromagnetic actuator (e.g., compare with the mechanical component 408 in FIG. 4. The system diagram 600 includes an output 610 that here includes the moving mass being displaced by a distance x.
[0070] In more detail, the spring damping system driven by an electromechanical motor (here, an actuator) can be characterized using the following:
mx(t) + cx(t) + kx(t ) = F(t) = kmotorI(t), where m is the moving mass, x(t) is the acceleration of the moving mass, c is the damping coefficient, x(t) is the velocity of the moving mass, k is the spring constant, F(t) is the applied force, kmotor is the motor efficiency parameter, and /(t) is the current.
[0071] The electrical circuit with a bEMF reaction force, moreover, can be characterized using the following:
V drive ( = Rl(f) + LI(t) + VbEMF,
where Vdrive(t) is the driving voltage, R is the resistance, /(t) is the current, L is the inductance, /(t) is the rate of change in the current, and VbEMF is the bEMF voltage.
[0072] The motor efficiency parameter kmotor can be considered as being involved in both the actuator and in the sensing of the provided haptic output. The motor efficiency parameter affects how efficient the motor is. The motor efficiency parameter can be used in converting a driving current to a driving force (e.g., an actuator mode), and/or to convert bEMF to velocity (e.g., a sensor mode). The actuator mode can be characterized using the following:
F(t) = kmotorI(t),
where F(t) is the applied force, kmotor is the motor efficiency parameter, and /(t) is the current.
[0073] The sensor mode, moreover, mode can be characterized using the following:
VbEMF kmotor % (
where VbEMF is the bEMF voltage, kmotor is the motor efficiency parameter, and x(t) is the velocity of the moving mass.
[0074] Based on the above, the electromagnetic actuator can be characterized by an actuator model that reflects motor efficiency. In the s domain, the actuator model can be expressed as:
Figure imgf000016_0001
where m is the moving mass, s is the complex frequency, c is the damping coefficient, k is the spring constant, X (s) is the displacement of the moving mass, kmotor is the motor efficiency parameter, I(s) is the current, F(s) is the voltage, R is the resistance, and L is the inductance.
[0075] Following on the above discussion, it will be exemplified how closed-loop feedback and calibration can be implemented in the system diagram 600. The system diagram 600 includes an operation 612 where the displacement x of the moving mass is multiplied by the complex frequency s to obtain the velocity of the moving mass. That is, if the motor efficiency parameter kmotor were constant, the constant and the bEMF voltage would be used to calculate the velocity.
[0076] The system diagram 600 includes a determination 614 that depends on a velocity, x, and on the motor efficiency parameter kmotor. The determination 614 can be provided with a calibration 616. The system diagram 600 includes a signal 618 from the determination 614 that provides a bEMF voltage VbEMF. In some implementations, the bEMF voltage VbEMF reflects a driving voltage determined with the benefit of closed-loop feedback. The bEMF voltage VbEMF can be provided to the operation 604. For example, the operation 604 can provide that the current / from the electrical circuit 606 is adapted so as to provide the intended haptic output based on the closed-loop feedback. That is, the transform 612, determination 614 and bEMF voltage VbEMF can correspond to the closed-loop feedback in the system diagram 600.
[0077] It was mentioned above that the motor efficiency parameter kmotor may change over time, and that the displacement can depend on the motor efficiency parameter. Because the motor efficiency parameter may change, the determination 614 that depends on the velocity and produces the bEMF voltage VbEMF may no longer be robust. The calibration 616 involves replacing the motor efficiency parameter kmotor with a present motor efficiency parameter kmotor and can address this or other situations.
[0078] Based on the above actuator model, a calibration relationship can be defined.
In particular, by combining the mechanical and electrical relationships, the haptic output can be characterized using:
Figure imgf000017_0001
where V (s) is the voltage, R is the resistance, L is the inductance, s is the complex frequency, kmotor is the motor efficiency parameter, m is the moving mass, c is the damping coefficient, k is the spring constant, and I(s) is the current. [0079] FIG. 7 schematically shows an example of a computer system 700 that provides closed-loop feedback for haptic output. FIG. 8 schematically shows an example of a calibration circuit 800. The computer system 700 and/or the calibration circuit 800 can be implemented using one or more examples described with reference to FIG. 11. The computer system 700 and/or the calibration circuit 800 can be used with one or more other examples described herein. Components of the computer system 700 and/or the calibration circuit 800 can serve the same or similar roles as corresponding components in other examples described herein.
[0080] The computer system 700 includes an actuator 702 that is controlled using a driver 704. The driver 704 includes a sensing circuit that performs voltage sensing 708 and current sensing 710 of the actuator 702. For example, the actuator 702 is an electromagnetic linear resonant actuator.
[0081] The computer system 700 includes driving inputs 712 of the driver 704 that are applied to the actuator 702. The computer system 700 includes a closed-loop feedback control 714 that allows the voltage sensing 708 and current sensing 710 to be taken into account when the driving inputs 712 are controlling the actuator 702.
[0082] The computer system 700 includes a calibration circuit 716 that updates a motor efficiency parameter used in the closed-loop feedback control 714.
[0083] The following are specific examples relating to calibration.
[0084] A pilot tone can be played on the actuator 702. In some implementations, the calibration circuit 800 can include a pilot tone generator circuit 802 that generates a first pilot tone to serve as the basis for calibration. For example, the first pilot tone can be on the order of lkHz. The voltage and current can be monitored. The first pilot tone can be played as part of generating haptic output using the actuator 702. The pilot tone generator circuit 802 can cause a driver to apply the drive voltages corresponding to the first pilot tone.
[0085] Based on playing the first pilot tone, a resistance and an inductance of the actuator 702 can be calculated using a transfer function between monitored current and monitored voltage, such as (*), In some implementations, the calibration circuit 800 can include a resistance/inductance calculation circuit 804 that determines values fori? and /. based on the first pilot tone that was supplied to the actuator 702. For example, the resistance/inductance calculation circuit 804 can obtain corresponding monitored current and voltage values and relate them to each other so as to determine the resistance and the inductance.
[0086] A second pilot tone can be played on the actuator 702. In some implementations, this can be done using the pilot tone generator circuit 802. The second pilot tone can have a significantly higher frequency than the first pilot tone. The second pilot tone can be one or more orders of magnitude higher frequency than the first pilot tone. For example, the second pilot tone can be about lOkHz. The pilot tone generator circuit 802 can cause a driver to apply the drive voltages corresponding to the second pilot tone.
[0087] While the resistance and the inductance have been determined, the relationship (*) contains parameters such as the damping coefficient (c) and the spring constant (k) that may not be known, or that may be preferable to eliminate for another reason. In some implementations, this can be done by enhancing the significance of a term that depends on the moving mass, such as the ms2 term in the denominator of the relationship (*). For example, the calibration circuit 800 can include a mass influence enhancement circuit 806 that correlates the monitored current and voltage from the second pilot tone and uses the above-determined resistance and the inductance in calculating a value for the motor efficiency parameter kmotor. Such a value can then be used in one or more calibration processes. For example, an existing motor efficiency parameter value in one or more relationships described herein can be replaced by, or updated to, a newly determined motor efficiency parameter value. Measuring the resistance and the inductance can conversely include reducing an influence of at least one of a damping (e.g., the damping coefficient) of the electromagnetic actuator, or a spring stiffness (spring constant) of the electromagnetic actuator, on the determination of the motor efficiency parameter. Their influence can be reduced by the higher second pilot tone because neither of these terms has a frequency dependency as great as that of the moving-mass term (multiplied by s2).
[0088] The motor efficiency parameter kmotor may change relatively slowly. In some implementations, the motor efficiency parameter kmotor may be updated at regular intervals. For example, the calibration and update can be done on the order of once a week, or once a day.
[0089] The computer system 700 is an example of a computer system that includes: a processor (e.g., processor 1102 in FIG. 11); a memory (e.g., memory 1104 in FIG. 11); a trackpad (e.g., the trackpad 100 in FIGS. 1-3); an electromagnetic actuator (e.g., the actuator 702) coupled to the trackpad and configured to generate at least first and second haptic outputs; a driver (e.g., the driver 704) for the electromagnetic actuator, the driver operated based on a motor efficiency parameter for the electromagnetic actuator; a sensing circuit (e.g., the sensing circuit 706) configured to determine a current and a voltage of the electromagnetic actuator that are associated with at least the first haptic output; and a calibration circuit (e.g., the calibration circuit 716) for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the
electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
[0090] FIG. 9 shows an example of a method 900 of calibrating haptic output for a trackpad. The method 900 can be performed with one or more other examples described herein. More or fewer operations can be performed. Two or more operations can be performed in another order unless otherwise indicated.
[0091] At 910, first haptic output can be generated. For example, the actuator sub system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
[0092] At 920, current and voltage can be determined. For example, the VCS 518 in FIG. 5 can determine current and voltage of the electromagnetic actuator 510.
[0093] At 930, a motor efficiency parameter can be replaced. For example, the calibration circuit 716 in FIG. 7 can replace a motor efficiency parameter used in the system diagram 600.
[0094] At 940, second haptic output based on the present motor efficiency parameter can be generated. For example, the actuator sub-system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
[0095] FIG. 10 shows another example of a method 1000 of calibrating haptic output for a trackpad. The method 1000 can be performed with one or more other examples described herein. More or fewer operations can be performed. Two or more operations can be performed in another order unless otherwise indicated.
[0096] At 1010, a present motor efficiency parameter can be determined. For example, the calibration circuit 716 in FIG. 7 can determine a present motor efficiency parameter for the system diagram 600.
[0097] At 1020, first haptic output can be generated. For example, the actuator sub system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
[0098] At 1030, current and voltage can be determined. For example, the VCS 518 in FIG. 5 can determine current and voltage of the electromagnetic actuator 510.
[0099] At 1040, as estimated haptic output based on the present motor efficiency parameter can be determined. For example, the closed-loop feedback control 714 in FIG. 7 can determine an estimated haptic output based on the voltage sensing 708 and the current sensing 710. [00100] At 1050, a trackpad driver signal can be generated. For example, the driver 512 in FIG. 5 can generate the trackpad driver signal 514.
[00101] At 1060, second haptic output can be generated. For example, the actuator sub-system 508 in FIG. 5 can generate haptic output on the trackpad 100 in FIGS. 1-3.
[00102] FIG. 11 shows an example of a generic computer device 1100 and a generic mobile computer device 1150, which may be used with the techniques described here.
Computing device 1100 is intended to represent various forms of digital computers, such as laptops, desktops, tablets, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other appropriate computing devices. Computing device 1150 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document. The generic computer device 1100 and/or the generic mobile computer device 1150 can be implemented in or on the enclosure 528 in FIG. 5.
[00103] Computing device 1100 includes a processor 1102, memory 1104, a storage device 1106, a high-speed interface 1108 connecting to memory 1104 and high-speed expansion ports 1110, and a low speed interface 1112 connecting to low speed bus 1114 and storage device 1106. The processor 1102 can be a semiconductor-based processor. The memory 1104 can be a semiconductor-based memory. Each of the components 1102, 1104, 1106, 1108, 1110, and 1112, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 1102 can process instructions for execution within the computing device 1100, including instructions stored in the memory 1104 or on the storage device 1106 to display graphical information for a GUI on an external input/output device, such as display 1116 coupled to high speed interface 1108. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 1100 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
[00104] The memory 1104 stores information within the computing device 1100. In one implementation, the memory 1104 is a volatile memory unit or units. In another implementation, the memory 1104 is a non-volatile memory unit or units. The memory 1104 may also be another form of computer-readable medium, such as a magnetic or optical disk.
[00105] The storage device 1106 is capable of providing mass storage for the computing device 1100. In one implementation, the storage device 1106 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine- readable medium, such as the memory 1104, the storage device 1106, or memory on processor 1102.
[00106] The high speed controller 1108 manages bandwidth-intensive operations for the computing device 1100, while the low speed controller 1112 manages lower bandwidth intensive operations. Such allocation of functions is exemplary only. In one implementation, the high-speed controller 1108 is coupled to memory 1104, display 1116 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 1110, which may accept various expansion cards (not shown). In the implementation, low-speed controller 1112 is coupled to storage device 1106 and low-speed expansion port 1114. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
[00107] The computing device 1100 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1120, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 1124. In addition, it may be implemented in a personal computer such as a laptop computer 1122. Alternatively, components from computing device 1100 may be combined with other components in a mobile device (not shown), such as device 1150. Each of such devices may contain one or more of computing device 1100, 1150, and an entire system may be made up of multiple computing devices 1100, 1150 communicating with each other.
[00108] Computing device 1150 includes a processor 1152, memory 1164, an input/output device such as a display 1154, a communication interface 1166, and a transceiver 1168, among other components. The device 1150 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components 1150, 1152, 1164, 1154, 1166, and 1168, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
[00109] The processor 1152 can execute instructions within the computing device 1150, including instructions stored in the memory 1164. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device 1150, such as control of user interfaces, applications run by device 1150, and wireless communication by device 1150.
[00110] Processor 1152 may communicate with a user through control interface 1158 and display interface 1156 coupled to a display 1154. The display 1154 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface 1156 may comprise appropriate circuitry for driving the display 1154 to present graphical and other information to a user. The control interface 1158 may receive commands from a user and convert them for submission to the processor 1152. In addition, an external interface 1162 may be provided in communication with processor 1152, so as to enable near area communication of device 1150 with other devices. External interface 1162 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
[00111] The memory 1164 stores information within the computing device 1150. The memory 1164 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory 1174 may also be provided and connected to device 1150 through expansion interface 1172, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory 1174 may provide extra storage space for device 1150, or may also store applications or other information for device 1150. Specifically, expansion memory 1174 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory 1174 may be provided as a security module for device 1150, and may be programmed with instructions that permit secure use of device 1150. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
[00112] The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 1164, expansion memory 1174, or memory on processor 1152, that may be received, for example, over transceiver 1168 or external interface 1162.
[00113] Device 1150 may communicate wirelessly through communication interface 1166, which may include digital signal processing circuitry where necessary. Communication interface 1166 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 1168. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 1170 may provide additional navigation- and location- related wireless data to device 1150, which may be used as appropriate by applications running on device 1150.
[00114] Device 1150 may also communicate audibly using audio codec 1160, which may receive spoken information from a user and convert it to usable digital information. Audio codec 1160 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1150. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1150.
[00115] The computing device 1150 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 1180. It may also be implemented as part of a smart phone 1182, personal digital assistant, or other similar mobile device.
[00116] Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs
(application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
[00117] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms“machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term“machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
[00118] To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
[00119] The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
[00120] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[00121] A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention.
[00122] In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims.

Claims

WHAT IS CLAIMED IS:
1. A method comprising:
determining, in a computer system, a present motor efficiency parameter for an electromagnetic actuator that is coupled to a trackpad;
generating, in the computer system, a first haptic output using the electromagnetic actuator;
determining, in the computer system, a current and a voltage of the electromagnetic actuator that are associated with the first haptic output;
determining, in the computer system, an estimated haptic output using the determined present motor efficiency parameter, the determined current and the determined voltage; generating, in the computer system, a trackpad driver signal based on the determined estimated haptic output; and
generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the generated trackpad driver signal.
2. The method of claim 1 , wherein determining the present motor efficiency parameter comprises measuring a resistance and an inductance of the electromagnetic actuator.
3. The method of claim 2, wherein measuring the resistance and the inductance comprises playing a first pilot tone on the electromagnetic actuator, and determining the resistance and the inductance using a transfer function that relates the resistance and the inductance to the voltage and the current using a complex frequency.
4. The method of claim 3, wherein measuring the resistance and the inductance further comprises reducing an influence of at least one of a damping of the electromagnetic actuator, or a spring stiffness of the electromagnetic actuator, on the determination of the present motor efficiency parameter.
5. The method of claim 4, wherein reducing an influence comprises playing a second pilot tone on the electromagnetic actuator.
6. The method of claim 5, wherein the second pilot tone has a higher frequency than the first pilot tone.
7. The method of any one of the preceding claims, wherein determining the present motor efficiency parameter comprises updating a velocity determination relating to a moving mass of the electromagnetic actuator.
8. The method of claim 7, wherein the velocity determination is updated using the determined current and the determined voltage.
9. A method comprising:
generating, in a computer system, a first haptic output using an electromagnetic actuator coupled to a trackpad, the electromagnetic actuator controlled by a driver operating based on a motor efficiency parameter for the electromagnetic actuator;
determining, in the computer system, a current and a voltage of the electromagnetic actuator that are associated with the first haptic output;
replacing, in the computer system, the motor efficiency parameter in the driver with a present motor efficiency parameter for the electromagnetic actuator, the present motor efficiency parameter based on the determined current and the determined voltage; and
generating, in the computer system, a second haptic output using the electromagnetic actuator, the second haptic output generated based on the present motor efficiency parameter of the driver.
10. The method of claim 9, wherein replacing the motor efficiency parameter with the present motor efficiency parameter comprises updating a back electromotive force determination relating to the electromagnetic actuator.
11. The method of either claim 9 or claim 10, wherein replacing the motor efficiency parameter with the present motor efficiency parameter comprises updating a velocity determination relating to a moving mass of the electromagnetic actuator.
12. The method of claim 11, wherein generating the first haptic output comprises playing a first pilot tone on the electromagnetic actuator.
13. The method of claim 12, further comprising enhancing, after playing the first pilot tone, an influence of a moving mass of the electromagnetic actuator on the updating of the velocity determination.
14. The method of claim 13, wherein enhancing the influence of the moving mass comprises playing a second pilot tone on the electromagnetic actuator, the second pilot tone having a higher frequency than the first pilot tone.
15. A computer system comprising:
a processor;
a memory;
an enclosure;
a trackpad;
an electromagnetic actuator coupled to the trackpad and configured to generate at least first and second haptic outputs; a driver for the electromagnetic actuator, the driver operated based on a motor efficiency parameter for the electromagnetic actuator;
a sensing circuit configured to determine a current and a voltage of the
electromagnetic actuator that are associated with at least the first haptic output; and
a calibration circuit for the driver, the calibration circuit configured to update the driver with a present motor efficiency parameter for the electromagnetic actuator to generate at least the second haptic output, the present motor efficiency parameter based on the determined current and the determined voltage.
16. The computer system of claim 15, wherein the electromagnetic actuator includes a linear resonant actuator.
17. The computer system of either claim 15 or claim 16, wherein the driver is configured to operate based on a velocity determination that depends on a back electromotive force of the electromagnetic actuator, and wherein the calibration circuit is configured to update the velocity determination of the driver.
18. The computer system of any one of claims 15 to 17, wherein the velocity determination is updated using the determined current and the determined voltage.
19. The computer system of any one of claims 15 to 18, wherein the driver is configured to trigger the electromagnetic actuator to play a first pilot tone in generating the first haptic output.
20. The computer system of claim 19, wherein the driver is further configured to trigger the electromagnetic actuator to play, after playing the first pilot tone, a second pilot tone that enhances an influence of a moving mass of the electromagnetic actuator on the updating of the driver with the present motor efficiency parameter.
PCT/US2018/050775 2018-09-12 2018-09-12 Calibrating haptic output for trackpad WO2020055405A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2018/050775 WO2020055405A1 (en) 2018-09-12 2018-09-12 Calibrating haptic output for trackpad

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/050775 WO2020055405A1 (en) 2018-09-12 2018-09-12 Calibrating haptic output for trackpad

Publications (1)

Publication Number Publication Date
WO2020055405A1 true WO2020055405A1 (en) 2020-03-19

Family

ID=63714086

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2018/050775 WO2020055405A1 (en) 2018-09-12 2018-09-12 Calibrating haptic output for trackpad

Country Status (1)

Country Link
WO (1) WO2020055405A1 (en)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11139767B2 (en) 2018-03-22 2021-10-05 Cirrus Logic, Inc. Methods and apparatus for driving a transducer
US11150733B2 (en) 2019-06-07 2021-10-19 Cirrus Logic, Inc. Methods and apparatuses for providing a haptic output signal to a haptic actuator
WO2021211235A1 (en) * 2020-04-16 2021-10-21 Cirrus Logic International Semiconductor Ltd. In-situ monitoring, calibration, and testing of a haptic actuator
US11259121B2 (en) 2017-07-21 2022-02-22 Cirrus Logic, Inc. Surface speaker
US11263877B2 (en) 2019-03-29 2022-03-01 Cirrus Logic, Inc. Identifying mechanical impedance of an electromagnetic load using a two-tone stimulus
US11269415B2 (en) 2018-08-14 2022-03-08 Cirrus Logic, Inc. Haptic output systems
US11269509B2 (en) 2018-10-26 2022-03-08 Cirrus Logic, Inc. Force sensing system and method
US11283337B2 (en) 2019-03-29 2022-03-22 Cirrus Logic, Inc. Methods and systems for improving transducer dynamics
US11380175B2 (en) 2019-10-24 2022-07-05 Cirrus Logic, Inc. Reproducibility of haptic waveform
US11396031B2 (en) 2019-03-29 2022-07-26 Cirrus Logic, Inc. Driver circuitry
US11408787B2 (en) 2019-10-15 2022-08-09 Cirrus Logic, Inc. Control methods for a force sensor system
US11500469B2 (en) 2017-05-08 2022-11-15 Cirrus Logic, Inc. Integrated haptic system
US11509292B2 (en) 2019-03-29 2022-11-22 Cirrus Logic, Inc. Identifying mechanical impedance of an electromagnetic load using least-mean-squares filter
US11515875B2 (en) 2019-03-29 2022-11-29 Cirrus Logic, Inc. Device comprising force sensors
US11545951B2 (en) 2019-12-06 2023-01-03 Cirrus Logic, Inc. Methods and systems for detecting and managing amplifier instability
US11552649B1 (en) 2021-12-03 2023-01-10 Cirrus Logic, Inc. Analog-to-digital converter-embedded fixed-phase variable gain amplifier stages for dual monitoring paths
US11636742B2 (en) 2018-04-04 2023-04-25 Cirrus Logic, Inc. Methods and apparatus for outputting a haptic signal to a haptic transducer
US11644370B2 (en) 2019-03-29 2023-05-09 Cirrus Logic, Inc. Force sensing with an electromagnetic load
US11656711B2 (en) 2019-06-21 2023-05-23 Cirrus Logic, Inc. Method and apparatus for configuring a plurality of virtual buttons on a device
US11669165B2 (en) 2019-06-07 2023-06-06 Cirrus Logic, Inc. Methods and apparatuses for controlling operation of a vibrational output system and/or operation of an input sensor system
CN116341171A (en) * 2021-12-24 2023-06-27 武汉市聚芯微电子有限责任公司 Evaluation method and system for motor tool vibration
US11726596B2 (en) 2019-03-29 2023-08-15 Cirrus Logic, Inc. Controller for use in a device comprising force sensors
US11765499B2 (en) 2021-06-22 2023-09-19 Cirrus Logic Inc. Methods and systems for managing mixed mode electromechanical actuator drive
US11908310B2 (en) 2021-06-22 2024-02-20 Cirrus Logic Inc. Methods and systems for detecting and managing unexpected spectral content in an amplifier system
US11933822B2 (en) 2021-06-16 2024-03-19 Cirrus Logic Inc. Methods and systems for in-system estimation of actuator parameters

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120229264A1 (en) * 2011-03-09 2012-09-13 Analog Devices, Inc. Smart linear resonant actuator control
US20150204925A1 (en) * 2014-01-21 2015-07-23 Texas Instruments Incorporated Method and apparatus for lra real time impedance tracking and bemf extraction
US20180158289A1 (en) * 2016-12-06 2018-06-07 Dialog Semiconductor (Uk) Limited Apparatus and Method for Controlling a Haptic Actuator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120229264A1 (en) * 2011-03-09 2012-09-13 Analog Devices, Inc. Smart linear resonant actuator control
US20150204925A1 (en) * 2014-01-21 2015-07-23 Texas Instruments Incorporated Method and apparatus for lra real time impedance tracking and bemf extraction
US20180158289A1 (en) * 2016-12-06 2018-06-07 Dialog Semiconductor (Uk) Limited Apparatus and Method for Controlling a Haptic Actuator

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11500469B2 (en) 2017-05-08 2022-11-15 Cirrus Logic, Inc. Integrated haptic system
US11259121B2 (en) 2017-07-21 2022-02-22 Cirrus Logic, Inc. Surface speaker
US11139767B2 (en) 2018-03-22 2021-10-05 Cirrus Logic, Inc. Methods and apparatus for driving a transducer
US11636742B2 (en) 2018-04-04 2023-04-25 Cirrus Logic, Inc. Methods and apparatus for outputting a haptic signal to a haptic transducer
US11966513B2 (en) 2018-08-14 2024-04-23 Cirrus Logic Inc. Haptic output systems
US11269415B2 (en) 2018-08-14 2022-03-08 Cirrus Logic, Inc. Haptic output systems
US11972105B2 (en) 2018-10-26 2024-04-30 Cirrus Logic Inc. Force sensing system and method
US11507267B2 (en) 2018-10-26 2022-11-22 Cirrus Logic, Inc. Force sensing system and method
US11269509B2 (en) 2018-10-26 2022-03-08 Cirrus Logic, Inc. Force sensing system and method
US11644370B2 (en) 2019-03-29 2023-05-09 Cirrus Logic, Inc. Force sensing with an electromagnetic load
US11283337B2 (en) 2019-03-29 2022-03-22 Cirrus Logic, Inc. Methods and systems for improving transducer dynamics
US11263877B2 (en) 2019-03-29 2022-03-01 Cirrus Logic, Inc. Identifying mechanical impedance of an electromagnetic load using a two-tone stimulus
US11396031B2 (en) 2019-03-29 2022-07-26 Cirrus Logic, Inc. Driver circuitry
US11509292B2 (en) 2019-03-29 2022-11-22 Cirrus Logic, Inc. Identifying mechanical impedance of an electromagnetic load using least-mean-squares filter
US11515875B2 (en) 2019-03-29 2022-11-29 Cirrus Logic, Inc. Device comprising force sensors
US11726596B2 (en) 2019-03-29 2023-08-15 Cirrus Logic, Inc. Controller for use in a device comprising force sensors
US11736093B2 (en) 2019-03-29 2023-08-22 Cirrus Logic Inc. Identifying mechanical impedance of an electromagnetic load using least-mean-squares filter
US11972057B2 (en) 2019-06-07 2024-04-30 Cirrus Logic Inc. Methods and apparatuses for controlling operation of a vibrational output system and/or operation of an input sensor system
US11150733B2 (en) 2019-06-07 2021-10-19 Cirrus Logic, Inc. Methods and apparatuses for providing a haptic output signal to a haptic actuator
US11669165B2 (en) 2019-06-07 2023-06-06 Cirrus Logic, Inc. Methods and apparatuses for controlling operation of a vibrational output system and/or operation of an input sensor system
US11656711B2 (en) 2019-06-21 2023-05-23 Cirrus Logic, Inc. Method and apparatus for configuring a plurality of virtual buttons on a device
US11408787B2 (en) 2019-10-15 2022-08-09 Cirrus Logic, Inc. Control methods for a force sensor system
US11692889B2 (en) 2019-10-15 2023-07-04 Cirrus Logic, Inc. Control methods for a force sensor system
US11380175B2 (en) 2019-10-24 2022-07-05 Cirrus Logic, Inc. Reproducibility of haptic waveform
US11847906B2 (en) 2019-10-24 2023-12-19 Cirrus Logic Inc. Reproducibility of haptic waveform
US11545951B2 (en) 2019-12-06 2023-01-03 Cirrus Logic, Inc. Methods and systems for detecting and managing amplifier instability
US11662821B2 (en) 2020-04-16 2023-05-30 Cirrus Logic, Inc. In-situ monitoring, calibration, and testing of a haptic actuator
GB2608066B (en) * 2020-04-16 2024-03-20 Cirrus Logic Int Semiconductor Ltd In-situ monitoring, calibration, and testing of a haptic actuator
GB2608066A (en) * 2020-04-16 2022-12-21 Cirrus Logic Int Semiconductor Ltd In-situ monitoring, calibration, and testing of a haptic actuator
WO2021211235A1 (en) * 2020-04-16 2021-10-21 Cirrus Logic International Semiconductor Ltd. In-situ monitoring, calibration, and testing of a haptic actuator
US11933822B2 (en) 2021-06-16 2024-03-19 Cirrus Logic Inc. Methods and systems for in-system estimation of actuator parameters
US11765499B2 (en) 2021-06-22 2023-09-19 Cirrus Logic Inc. Methods and systems for managing mixed mode electromechanical actuator drive
US11908310B2 (en) 2021-06-22 2024-02-20 Cirrus Logic Inc. Methods and systems for detecting and managing unexpected spectral content in an amplifier system
US11552649B1 (en) 2021-12-03 2023-01-10 Cirrus Logic, Inc. Analog-to-digital converter-embedded fixed-phase variable gain amplifier stages for dual monitoring paths
CN116341171A (en) * 2021-12-24 2023-06-27 武汉市聚芯微电子有限责任公司 Evaluation method and system for motor tool vibration

Similar Documents

Publication Publication Date Title
WO2020055405A1 (en) Calibrating haptic output for trackpad
CN107111400B (en) Method and apparatus for estimating touch force
CN104020844B (en) Haptic apparatus with linear resonance actuator
AU2014221602B2 (en) Apparatus and method for providing haptic feedback to input unit
US8937603B2 (en) Method and apparatus for haptic vibration response profiling and feedback
US8058884B2 (en) System and method for measuring a capacitance and selectively activating an indicating transducer
KR102112813B1 (en) Accelerometer based Hall effect sensor filtering for computing devices
US10691209B2 (en) Stylus with haptic feedback for texture simulation
US11054908B2 (en) Haptic tactile feedback with buckling mechanism
US10559273B2 (en) Display screen control method and apparatus and terminal
WO2009094200A1 (en) Integrated force sensitive lens and software
CN105190495A (en) Force determination based on capacitive sensing
US10209843B2 (en) Force sensing using capacitive touch surfaces
KR20150047577A (en) Input device with hand posture control
US10261604B2 (en) Active stylus velocity correction
CN103984465A (en) Method for displaying calendar contents on user interface and mobile terminal
KR20140134940A (en) Mobile terminal and method for controlling touch screen and system threefor
US20120169619A1 (en) Electronic device and method of controlling same
US20220083141A1 (en) Haptic output for trackpad controlled using force signal and sense signal
US20130100158A1 (en) Display mapping modes for multi-pointer indirect input devices
KR20140106996A (en) Method and apparatus for providing haptic
US10990222B2 (en) Calibration of trackpad
WO2020055404A1 (en) Controlling haptic output for trackpad
US20150035785A1 (en) Electronic device and method of detecting touches on a touch-sensitive display
KR101366433B1 (en) Electronic device and method of controlling same

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18779920

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18779920

Country of ref document: EP

Kind code of ref document: A1