

The DRV2605L is a haptic driver IC designed to control vibration motors in various applications. It is widely used in devices requiring tactile feedback, such as smartphones, gaming controllers, wearables, and medical devices. This component simplifies the implementation of haptic feedback by providing built-in waveform libraries and supporting both linear resonant actuators (LRAs) and eccentric rotating mass (ERM) motors. Additionally, the DRV2605L features I2C communication, making it easy to integrate into microcontroller-based systems.








The DRV2605L is a versatile and efficient haptic driver IC. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Operating Voltage Range | 2.0V to 5.2V |
| Typical Operating Voltage | 3.3V |
| Maximum Output Voltage | 5.5V |
| Output Drive Type | LRA and ERM motors |
| Communication Interface | I2C |
| Built-in Waveforms | Yes (123 preloaded waveforms) |
| Operating Temperature Range | -40°C to 85°C |
| Package Type | 10-pin VSON (3mm x 3mm) |
The DRV2605L comes in a 10-pin VSON package. Below is the pin configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | IN/TRIG | Input trigger pin for external PWM or analog control |
| 2 | SDA | I2C data line |
| 3 | SCL | I2C clock line |
| 4 | VDD | Power supply input (2.0V to 5.2V) |
| 5 | GND | Ground |
| 6 | OUT+ | Positive output for motor connection |
| 7 | OUT- | Negative output for motor connection |
| 8 | EN | Enable pin (active high) |
| 9 | NC | No connection |
| 10 | ASEL | Address select pin for I2C (used to set the I2C address) |
Below is an example of how to control the DRV2605L using an Arduino UNO:
#include <Wire.h>
#include <Adafruit_DRV2605.h>
// Create an instance of the DRV2605L library
Adafruit_DRV2605 drv;
void setup() {
Serial.begin(9600); // Initialize serial communication for debugging
Serial.println("Initializing DRV2605L...");
// Initialize the DRV2605L
if (!drv.begin()) {
Serial.println("DRV2605L not found. Check connections.");
while (1); // Halt execution if initialization fails
}
Serial.println("DRV2605L initialized successfully.");
// Select the ERM motor mode
drv.selectLibrary(1); // Library 1 is optimized for ERM motors
drv.setMode(DRV2605_MODE_INTTRIG); // Set to internal trigger mode
}
void loop() {
// Play a haptic effect (e.g., effect #1 from the library)
drv.setWaveform(0, 1); // Set effect #1 on slot 0
drv.setWaveform(1, 0); // End of waveform sequence
drv.go(); // Start playback
delay(1000); // Wait for 1 second before repeating
}
Adafruit_DRV2605 library is used for simplicity. Install it via the Arduino Library Manager.The DRV2605L is not responding to I2C commands.
The motor does not vibrate.
The device overheats during operation.
The Arduino code fails to initialize the DRV2605L.
This concludes the documentation for the DRV2605L. For further details, refer to the official datasheet or application notes.