Sophisticated Haptic Drivers for PWM Signals
The availability of sophisticated haptic drivers in today's market makes their implementation into a system quite simple.
Tactile feedback, often referred to as simple “haptics,” uses the sense of touch in a user interface design to provide information to an end user. This generally means the use of the system’s vibration alert system to denote that a button has been pressed. The resistive force that some “force feedback” joysticks and video game steering wheels provide is a form of haptic feedback.
This type of feedback can be costly to implement because of the support devices required to produce the haptic event or vibration alert. A full system requires a touch controller with embedded software, another controller with USB interface to talk to the touchscreen controller, a power amplifier, and an eccentric rotation mass (ERM) motor or linear resonant actuator (LRA). Today, there are many drivers with combined functions and controllers that have the ability to drive complex pulse width modulation (PWM) signals and can be implemented into a system at a lower cost.
Haptic Driver Description
These devices are high-performance enhanced haptic drivers used to produce an alert to the user that a task has been executed or completed. There are two ways a haptic driver can generate a vibration alert or haptic event. The first method controls the haptic enable (HEN) pin with a controlled high/low signal, and the second drives the PWM input with a single-ended PWM signal to control a DC or AC motor. The PWM input signal-duty cycle changes the amplitude of the positive and negative outputs for the motor drive, which controls the vibration strength. The vibration is at a maximum when the duty ratio is 1/99 percent, or 99/1 percent and stopped at 50 percent.
Many of these devices have their own register maps, which are accessible via I2C serial communication. If the system is using a microcontroller, it can generate both PWM and I2C code, making the task to control the alert quite simple.
The haptic driver converts the PWM output to differential DC levels on the MDP/MDN outputs of an ERM device, and in the case of an LRA driver, converts the PWM output to an AC signal equal to the resonant frequency of the LRA. Generally, this
PWM output signal is in the range of 150 to 250 Hz. It is critical that any haptic driver used with an LRA device, has the ability to detect the resonant frequency of the LRA in use on an event by event basis.
Simple Haptics Implementations
The first haptic implementation is a driver that uses the HEN pin to control when the programmed differential voltage will be driven across the output of an ERM. This driver is used in its default mode, which means that the output differential drive is 3 V. The schematic in Figure 1 shows the power and control signals to the haptic driver and in this case, uses a 555 timer to generate the haptic control pulse on the HEN pin. The length of time that the ERM is on determines the time constant of the resistor/capacitor combination R4/C9. In this case, the motor rotates approximately 1.1 seconds each time the momentary switch S1 is depressed.
The next implementation uses an Arduino Uno to control the HEN pin. The ability to generate different alert signals is easier when using a microcontroller. This also provides the ability to talk to the I2C port if desired. In the schematic in Figure 2, haptic vibrations are generated based on which one of the three switches is depressed, allowing control of the haptic output of the driver. When SW1 is pressed the ERM will spin once for the length of time the program holds pin 12 high. The other switches produce a double pulse (SW2) and a triple pulse (SW3) output again for the length of time pin 12 is held high.
Figure 3 is a scope capture of the output of the driver. SW3 is depressed, causing the motor to start and stop three times or a SW3. The M1 plot is a mathematical equation of the difference between the MDP and MDN pins. As you can see, the default programmed output level of the driver is 3.0 V. If you have an ERM, which requires a different drive voltage, this can be programmed through the I2C port.
The next implementation uses a PWM signal to generate haptic events, which can be used for both ERM and LRA devices. In this case, the implementation of an Arduino Uno controller drives the PWM and I2C lines of this LRA haptic driver. The LRA is a Precision Microdrives LRA, which resonates at 175 Hz. To implement the correct resonant frequency, a command is sent through the I2C line to the driver device a PWM divide by the ration of 357, because the PWM is driving at 62.5 KHz. This device is set by default to calibrate the resonant frequency of the LRA every time a haptic event is executed when triggered by HEN being driven from low to high (Figure 4).
Figure 5 is a scope capture of a simple ramp. The inputs are shown in channel 1 (HEN) and 2 (PWM). The PWM signal is under sampled, so it represents the varying amplitude of the PWM as the duty cycle increases from 50/50 to 99/1 percent. The PWM is actually at 62.5 KHz. Outputs of the driver are shown on channels 3 and 4. At the beginning of the output signal, the calibration pulses are evident and then the LRA is driven from no differential voltage to a maximum differential voltage of 2 V RMS, and then back down to zero.
The availability of sophisticated haptic drivers in today’s market makes their implementation into a system quite simple. A systems designer can decide if they want to run a simple driver and just toggle a HEN pin, or they can chose to use a more complex implementation and use a PWM signal along with the HEN and I2C control. These haptic driver devices are user friendly and require minimal, if any, external components.