How to control vibration motors (LRA)

Hello all,
I have to control 5 vibration motors LRA using arduino uno but I don't know how to do it.
The goal is to be able to manage the oscillation amplitude of each motor individually at its own resonant frequency.
On the web I found some examples where LRAs were controlled using drivers like DVR2605L, so I wanted to ask you if it is the only way to control an LRA and therefore I will have to buy 5 drivers (one for each vibration motor) or if there is another way.
Has anyone already used LRAs or know other similar projects?

The model of LRA:

If you don't know how to drive an LRA, then buying a driver would seem to me to be the simplest option, particularly a driver seemingly designed for the job.
Or you could buy just one, play around with it and decide what features you and don't need, then build your own driver.

Hi @vriccardo ,
LRA type motors require alternating current to operate.
These are usually very low voltages.

Generating or switching these voltages is not very easy.
If you were able to generate or control multiple AC voltages, then you will be able to accomplish your project.

This CI mentioned by you does this function.
It uses I2C, which could use several CIs connected, but it is not possible as it only has 1 I2C address (The device address is 0x5A (7-bit).

RV mineirin

But it does have an EN pin, and a TRIG pin

The other approach is to use a I2C-Bus-Mutliplexer

yes, I am looking for a way to manage more AC signals with arduino without using drivers with I2C communication which would complicate the project, I have seen some examples with mosfet and pwm to simulate an alternating current but not being an expert in the electronics sector I wondered if it can be a valid solution.

The example I saw:

well if you take a close look at those chips Haptic Motor Driver - DRV2605L
The datasheet says "Automatic Resonance Tracking and Reporting (LRA Only)"

You get a lot of comfort with using these chips. Because the driver-chip does the resonate tracking.

Without a driver-chip; a single MOS-FET can switch ON/OFF but a single MOS-FET can not create an alternating current. For creating an alternating current you have to build up H-bridges on your own (four MOS-FETS) or use H-bridge-modules and then all the hassling about measuring where is the resonant frequency is up to you by adding current-sensors or force-sensors to find them.

If you mean you yourself want to control the AC's frequency it is different. But you still will need H-bridges to create AC-current. If you want this current to be aproximated to a sinewave again you will need additional effort to do that.

EDIT: The article you linked to says they were using a computer-audio-signal to create a sinewave-signal. That is a neat solution for the cost of needing a real computer (at least a raspberry Pi which can create the sinewave-signal.

Maybe an MP3-player-modul can be used with the arduino. But then you loose comfort in sweeping the frequency

WIth googling I found this link:
It needs 2 IO-pins per aproximated sinewave. So you would need 10 for 5 approximated sinewaves.

And still you need additional hardware.

Or using something like this:

This leads to the question: is mechanical vibration what you need in the end? Or is the final purpose a LRA-driving device?

If it is mechanical vibration: how about using ERMs? Much simpler to drive by a simple PWM-signal you can control the rpm.

EDIT2: Eby has some really small modules to create a sinewave
The output of this module can be connected to a small audio-amplifier

best regards Stefan

your advice was very useful,
it seems quite complicated to control every lra without a driver so i will try to use a dvr2605.
Do you think this product (SparkFun Haptic Motor Driver - DRV2605L - ROB-14538 - SparkFun Electronics) is a valid solution for my lra (
And do you know if needs a voltage regulator to avoid damaging the LRA by giving it more than 2 volts or is it all controlled by the driver?
thank you all

Hi vriccardo,

I was googling all the information posted above new initiated by your question. It took me maybe 20 minutes to find them.

Your question can be answered by the datasheet.
The number that is mentioned with the board in 98% of all cases names the main-chip of the module so you simply copy this number paste it into google and add the word "datasheet"

best regards Stefan

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.