Zbotic Logo Zbotic Logo
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

  • Shop
  • About Us
  • Contact Us
  • Reseller
  • Blogs
020 69134444
1800 209 0998
[email protected]
Help Desk
Facebook Twitter Instagram Linkedin YouTube
Zbotic Logo Zbotic Logo
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

All departments
  • 3D Print Service
  • 3D Printer
  • Batteries & Chargers
  • Development Boards
  • Drone Parts
  • EBike parts
  • Sensor Modules
  • Electronic Components
  • Electronic Modules
  • IoT and Wireless
  • Mechanical Parts and Workbench Tools
  • Motors & Drivers & Pumps & Actuators
  • DIY and Robot Kits
  • Show more
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
Return to previous page
Home Motors & Actuators

Haptic Motor (ERM & LRA): Vibration Feedback in Arduino Projects

Haptic Motor (ERM & LRA): Vibration Feedback in Arduino Projects

March 11, 2026 /Posted byJayesh Jain / 0

Haptic feedback is everywhere — your phone buzzes when you get a notification, your game controller rumbles during a crash, and your smartwatch taps your wrist with alerts. Behind all of this is a tiny but powerful component: the haptic vibration motor. In this guide, we’ll explore the two main types — ERM (Eccentric Rotating Mass) and LRA (Linear Resonant Actuator) — and walk you through how to integrate them into your Arduino projects for realistic, responsive vibration feedback.

Table of Contents

  1. What Is a Haptic Motor?
  2. ERM vs LRA: Key Differences
  3. How ERM Motors Work
  4. How LRA Motors Work
  5. Wiring Haptic Motors to Arduino
  6. Arduino Code Examples
  7. Using the DRV2605L Haptic Driver
  8. Creative Project Ideas
  9. Troubleshooting Tips
  10. Frequently Asked Questions

What Is a Haptic Motor?

A haptic motor is a small electromechanical device that converts electrical signals into physical vibrations. Unlike regular DC motors that spin a shaft to do mechanical work, haptic motors are designed specifically to generate tactile feedback — vibrations you can feel.

They are used in consumer electronics (smartphones, wearables), medical devices, gaming controllers, and increasingly in DIY Arduino and robotics projects. The two dominant types used in maker electronics are ERM (Eccentric Rotating Mass) and LRA (Linear Resonant Actuator).

In the Indian maker community, vibration motors are increasingly affordable and accessible, making them an excellent component to add “feel” to your projects — from notification alerts in wearables to tactile confirmation buttons in custom keyboards.

ERM vs LRA: Key Differences

Before diving into the circuits, it’s important to understand what sets these two technologies apart:

Feature ERM Motor LRA Motor
Working Principle Spinning eccentric mass Linear back-and-forth movement
Response Time ~50–100 ms ~5–20 ms
Power Consumption Higher Lower
Frequency Control Via voltage/PWM Resonant frequency (fixed)
Vibration Feel Buzzy, wide frequency range Crisp, precise “click” feel
Cost Very low (₹20–₹80) Moderate (₹150–₹400)
Best For Notifications, alarms, simple buzz Nuanced haptic effects, wearables

Bottom line: For most Arduino beginners and intermediate makers, ERM motors are the go-to choice because of their simplicity and low cost. LRA motors are preferred when you need precise, nuanced feedback with lower power draw — like in smartwatches or advanced HMI devices.

1.5-5V DC Vibration Motor with Wire

1.5-5V DC Vibration Motor with Wire

A classic ERM vibration motor perfect for Arduino projects. Wide voltage range (1.5–5V), comes pre-wired, and is ideal for basic haptic feedback in wearables, alarms, and DIY gadgets.

View on Zbotic

How ERM Motors Work

An ERM motor is essentially a tiny DC motor with an off-center (eccentric) weight attached to its shaft. When the motor spins, the unbalanced mass creates centrifugal force in rotating directions — and since the direction constantly changes as the shaft spins, the net result is a vibration that you can feel.

ERM motors come in two physical forms:

  • Coin/Pancake ERM: Flat disc shape, common in smartphones. Low profile but harder to solder.
  • Cylindrical/Barrel ERM: Cylinder shape with two wire leads. Easy to use with a breadboard or perfboard. This is the type most commonly sold for Arduino projects.

Key electrical characteristics of a typical ERM (like the 1.5–5V cylindrical type):

  • Operating voltage: 1.5V – 5V DC
  • Rated voltage: 3V (typical sweet spot)
  • Rated current: 60–100 mA
  • Vibration frequency: 90–200 Hz depending on voltage
  • Start voltage: ~0.9V

Because the vibration frequency is directly related to the motor’s RPM, you can control the “intensity” (and slightly the frequency) of an ERM by varying the voltage or PWM duty cycle. Higher PWM = faster spin = stronger and slightly higher frequency vibration.

Important: An ERM motor draws 60–100 mA at full speed. Arduino GPIO pins are rated for only 40 mA maximum (20 mA recommended). Never drive a vibration motor directly from an Arduino pin without a transistor or motor driver.

How LRA Motors Work

An LRA motor works on a completely different principle. Instead of spinning, it contains a mass suspended on a spring. When driven at its resonant frequency with an AC signal, the mass oscillates linearly (back and forth), producing vibration.

Because an LRA must be driven at its resonant frequency (typically 150–200 Hz for vertical LRAs, or 175–230 Hz for some types), you cannot simply apply DC voltage. You need:

  • A 50% duty cycle AC (square wave) signal at the resonant frequency, OR
  • A dedicated haptic driver IC like the DRV2605L from Texas Instruments (which auto-detects resonance and handles all waveform generation)

LRAs are much more power-efficient than ERMs for the same perceived vibration strength, and they respond and stop much more quickly — giving a crisp “tap” feel instead of a buzzy rumble. This is why Apple’s Taptic Engine (used in iPhones and Apple Watch) is an LRA-based system.

Wiring Haptic Motors to Arduino

Method 1: Simple ERM with NPN Transistor (No Driver IC)

This is the most common and simplest approach for ERM motors in Arduino projects.

Components needed:

  • Arduino Uno / Nano
  • 1.5–5V ERM vibration motor
  • NPN transistor (2N2222, BC547, or S8050)
  • 1N4001 flyback diode
  • 1 kΩ resistor (base resistor)
  • Jumper wires

Wiring connections:

  • Arduino digital pin (e.g., D9) → 1 kΩ resistor → Transistor Base
  • Transistor Emitter → GND
  • Transistor Collector → Motor negative wire (–)
  • Motor positive wire (+) → 5V
  • Flyback diode: Cathode (stripe) to 5V, Anode to Collector/Motor– junction

The flyback diode is essential. When you cut power to the motor, the collapsing magnetic field generates a reverse voltage spike that can destroy your transistor or Arduino. The diode clamps this spike safely.

Method 2: Using the DRV2605L Haptic Driver (for both ERM and LRA)

The DRV2605L is a dedicated haptic driver IC that makes driving both ERM and LRA motors extremely easy. It communicates over I2C, has a built-in library of 123 pre-programmed haptic effects, auto-detects motor type, auto-calibrates, and handles all the waveform complexity for LRA motors.

Wiring DRV2605L breakout to Arduino Uno:

  • VIN → 5V
  • GND → GND
  • SDA → A4
  • SCL → A5
  • Motor OUT+ → Motor +
  • Motor OUT– → Motor –

Arduino Code Examples

Basic ERM On/Off with Transistor

const int motorPin = 9; // PWM pin

void setup() {
  pinMode(motorPin, OUTPUT);
}

void loop() {
  // Vibrate for 500ms
  digitalWrite(motorPin, HIGH);
  delay(500);
  
  // Stop for 1 second
  digitalWrite(motorPin, LOW);
  delay(1000);
}

PWM Intensity Control for ERM

const int motorPin = 9; // Must be PWM pin (~)

void setup() {
  pinMode(motorPin, OUTPUT);
}

void loop() {
  // Ramp up vibration intensity
  for (int i = 0; i <= 255; i += 5) {
    analogWrite(motorPin, i);
    delay(20);
  }
  delay(500);
  
  // Short strong pulse pattern
  for (int i = 0; i < 3; i++) {
    analogWrite(motorPin, 200);
    delay(100);
    analogWrite(motorPin, 0);
    delay(100);
  }
  delay(1000);
}

DRV2605L with Pre-programmed Haptic Effects

// Install: Adafruit DRV2605 Library
#include <Wire.h>
#include <Adafruit_DRV2605.h>

Adafruit_DRV2605 drv;

void setup() {
  drv.begin();
  drv.selectLibrary(1); // ERM library (use 6 for LRA)
  drv.setMode(DRV2605_MODE_INTTRIG); // Internal trigger mode
}

void loop() {
  // Play effect #1: Strong Click
  drv.setWaveform(0, 1);  // Effect slot 0 = effect #1
  drv.setWaveform(1, 0);  // End of sequence
  drv.go();
  delay(500);
  
  // Play effect #14: Double Click
  drv.setWaveform(0, 14);
  drv.setWaveform(1, 0);
  drv.go();
  delay(1000);
}

The DRV2605L includes 123 pre-programmed effects — from single clicks and double taps to long buzzes, heartbeats, and ramp pulses. These are stored in ROM and numbered 1–123 in the datasheet’s effect library.

1.5V-3V 4x8MM Hollow Cup Miniature Micro DC Vibration Motor

1.5V-3V 4x8MM Hollow Cup Micro DC Vibration Motor (10mm Wire)

An ultra-compact hollow cup ERM motor (just 4mm dia x 8mm long). Perfect for miniature wearables, smartwatch prototypes, and tight-space projects where a full-size motor won’t fit.

View on Zbotic

Using the DRV2605L Haptic Driver in Depth

The DRV2605L deserves a deeper look because it unlocks the full potential of haptic feedback — especially for LRA motors and advanced effects.

Key Features of DRV2605L

  • Dual mode: Supports both ERM and LRA motors (software-switchable)
  • 123 built-in effects: ROM library of haptic waveforms
  • Auto-resonance tracking: For LRA motors, it auto-detects and locks to the resonant frequency
  • Auto-calibration (OTP): One-time programmable calibration for your specific motor
  • Audio-to-haptic mode: Can convert audio input to haptic vibration patterns
  • I2C interface: Address 0x5A (fixed), easy integration
  • Operating voltage: 2.0V – 5.2V supply

ERM vs LRA Mode Selection in Code

// For ERM motor:
drv.selectLibrary(1); // Libraries 1-5 are ERM
drv.setMode(DRV2605_MODE_INTTRIG);

// For LRA motor:
drv.selectLibrary(6); // Library 6 is LRA
drv.useERM(); // Switch to ERM
drv.useLRA(); // Switch to LRA

Creative Project Ideas Using Haptic Motors

1. Haptic Notification Bracelet

Build a simple wrist-worn alert band using an Arduino Nano, a small ERM motor, and a Bluetooth module (HC-05). When paired with your phone, it can buzz your wrist for incoming calls or messages. The compact 4x8mm hollow cup motors are perfect for this — they fit inside a watch-strap housing.

2. Tactile Feedback Button Panel

Add ERM motors behind physical push buttons. When a button is pressed, trigger a short 50ms vibration pulse to confirm the action. This is especially useful for control panels used in noisy environments where audible beeps are drowned out.

3. Navigation Aid for the Visually Impaired

Using an ultrasonic distance sensor (HC-SR04) and an ERM motor, build a haptic cane attachment that vibrates faster as obstacles get closer. Different pulse patterns can encode different distance ranges.

4. Game Controller Rumble

Add rumble feedback to a custom Arduino-based game controller. Use PWM to vary intensity based on in-game events — soft pulses for footsteps, strong buzzes for explosions.

5. Haptic Metronome for Musicians

Replace a beeping metronome with a wrist-worn haptic one. No sound disturbance during practice — just a precise tap on your wrist on every beat. An LRA with DRV2605L gives the crisp, clean tap feel needed here.

Troubleshooting Tips

Motor Not Vibrating at All

  • Check if the transistor is correctly oriented (Base, Collector, Emitter order varies by transistor model — check datasheet)
  • Verify the PWM pin is actually generating a signal with a multimeter or LED test
  • Measure voltage across motor terminals — should be 2.5–5V when active
  • ERM motors have a minimum start voltage (~0.9V) — don’t use very low PWM values

Arduino Resets When Motor Starts

This is a classic power supply issue. The motor’s inrush current causes a voltage dip on the 5V rail, resetting the Arduino. Solutions:

  • Add a 100 µF electrolytic capacitor across the 5V and GND rails
  • Power the motor from a separate supply (not Arduino’s 5V)
  • Use a motor driver or driver IC with a separate power input

Vibration is Very Weak

  • Check if the PWM duty cycle is too low (try increasing to 180–255)
  • Verify 5V supply can deliver enough current (USB power from PC may be limited)
  • For ERM motors, the rated voltage is usually 3V — running at 5V gives stronger vibration (within limits)

DRV2605L Not Detected on I2C

  • Run an I2C scanner sketch to confirm it appears at address 0x5A
  • Check SDA/SCL connections (on Uno: A4/A5; on Mega: 20/21; on Nano: A4/A5)
  • Ensure 3.3V or 5V is supplied to VIN (check your breakout board’s regulator)

Frequently Asked Questions

Can I connect a vibration motor directly to an Arduino pin?

No. A vibration motor draws 60–100 mA, but Arduino GPIO pins can safely supply only 20–40 mA. Directly connecting the motor will overheat the pin driver and may permanently damage the microcontroller. Always use a transistor, MOSFET, or motor driver IC between the pin and motor.

What is the difference between ERM and LRA haptic motors?

ERM motors use a spinning eccentric mass and are controlled by DC voltage/PWM. They are cheap, simple, and widely available. LRA motors use linear resonant vibration at a fixed frequency — they are faster responding, more precise, and more power-efficient, but require an AC drive signal at the resonant frequency (typically handled by a dedicated driver IC like DRV2605L).

Can I use analogWrite() to control vibration intensity?

Yes — for ERM motors via a transistor, analogWrite(pin, value) sets the PWM duty cycle from 0 (off) to 255 (full). Higher values = faster spinning = stronger vibration. Use a PWM-capable pin (marked ~ on Arduino Uno: pins 3, 5, 6, 9, 10, 11).

Do I need a flyback diode for vibration motors?

Yes, always. Even small vibration motors generate a brief reverse voltage spike when switched off. This spike can exceed the transistor’s or driver IC’s voltage rating and cause failure. A simple 1N4001 or 1N4148 diode placed in reverse across the motor terminals (cathode to +, anode to –) suppresses this spike.

What voltage should I run my ERM vibration motor at?

Most cylindrical ERM vibration motors sold for Arduino projects are rated at 3V. At 5V, they spin faster and vibrate more strongly — this is usually fine for brief pulses. For continuous operation, stick closer to the rated voltage to avoid overheating. Always check the datasheet of your specific motor.

Can the 4x8mm micro vibration motor fit inside a wearable?

Yes — the 4mm diameter × 8mm length hollow cup motors are specifically designed for tight-space applications. They are used in real wearable devices, earbuds, and compact handheld gadgets. At 1.5V–3V, they draw minimal current, making them ideal for battery-powered wearable Arduino projects.

Conclusion

Haptic motors — both ERM and LRA — are a fantastic way to add a new sensory dimension to your Arduino projects. ERM motors are ideal for beginners: cheap, simple to wire with a transistor, and easy to control with basic PWM. LRA motors, when paired with a DRV2605L driver, offer precise, professional-grade haptic effects suitable for wearables and advanced HMI applications.

The key takeaways from this guide: always use a transistor or driver IC (never direct pin connection), always include a flyback diode, choose PWM-capable pins for intensity control, and consider the DRV2605L if you want access to the full library of 123 pre-programmed haptic effects.

Ready to get started? Pick up an ERM vibration motor from Zbotic and start adding tactile feedback to your next project today!

Tags: Arduino vibration, ERM motor, haptic motor, LRA motor, vibration feedback
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
LiPo Battery Charging Safety: ...
blog lipo battery charging safety dos and donts complete guide 596433
blog vibration sensor sw 420 vs adxl345 which one should you use for your project 596439
Vibration Sensor SW-420 vs ADX...

Related posts

Svg%3E
Read more

Gear Motor Guide: N20, JGB37, and Planetary Motors Compared

April 1, 2026 0
When your project needs more torque than a bare DC motor can provide, a gear motor is the answer. By... Continue reading
Svg%3E
Read more

Miniature Pump Hydroponics: Automated Nutrient Dosing System

April 1, 2026 0
Hydroponics grows plants in nutrient-rich water instead of soil, and automating the nutrient dosing process with peristaltic pumps and Arduino... Continue reading
Svg%3E
Read more

Drone Motor Testing: Thrust Stand Build and KV Measurement

April 1, 2026 0
If you are building a drone, selecting the right motor-propeller combination is critical for flight performance. A drone motor thrust... Continue reading
Svg%3E
Read more

Pump Selection Guide: Peristaltic, Submersible, and Diaphragm

April 1, 2026 0
When your Arduino project needs to move liquid — whether for automated plant watering, hydroponics, aquarium management, or a coffee... Continue reading
Svg%3E
Read more

Solenoid Guide: Door Locks, Valves, and Automation Projects

April 1, 2026 0
A solenoid is an electromechanical device that converts electrical energy into linear motion. When you energise the coil, a plunger... Continue reading

Add comment Cancel reply

Your email address will not be published. Required fields are marked

Facebook Twitter Instagram Pinterest Linkedin Youtube

Get the latest deals and more.

Download on Google Play Download on the App Store

Call us: 020 69134444 / 1800 209 0998

Monday - Saturday 09:30 AM - 06:00 PM
For Technical Supports Email: [email protected]
For Sales / Enquiries Email: [email protected]

  • My Account

    • Cart

    • Wishlist

    • Checkout

    • My Orders

    • Track Order

    • My Account

  • Information

    • FAQs

    • Blogs

    • Career

    • About Us

    • Contact Us

    • Payment Options

  • Policies

    • Privacy Policy

    • Terms & Conditions

    • GST Input Tax Credit

    • Shipping Return Policy

    • E-Waste Collection Points

    • Our Sitemap

© Zbotic.in is registered trademark of Moxie Supply Pvt Ltd – All Rights Reserved
Login
Use Phone Number
Use Email Address
Not a member yet? Register Now
Reset Password
Use Phone Number
Use Email Address
Register
Already a member? Login Now