3v haptic motors at variable speed

Good morning,

Sorry if this is a rather basic question

The project I am working on needs to use haptic feedback. The best motors for my purpose are the small flat coin ones, similar to these ones

I need to be able to vary the speed in order to vary the intensity of the feedback. Immediate thought was to connect to the PWM outputs of my arduino and use a voltage divider to reduce the 5v output to the rated 3v.

Simply put, is this safe? Is it overkill for that matter or can I (safely!) use the PWM functionality to do the same job? If not, am I looking at adding a controller?

In my current non-variable solution, I have the motors connected to a transistor supplying from the 3.3v output and activated by a normal signal pin with a diode in place to prevent feedback into the arduino when the motor is stopped.

Many thanks,

If you are using PWM why would you need to reduce the voltage as well?

I would use a separate supply for a motor anyway, perhaps a 1A 3.3V regulator, to avoid overloading the on-board surface mount 3.3V regulator.

A voltage divider doesn't do power, it doesn't regulate and assumes no load current.

First, thank you

Apologies if I am misunderstanding, but if I were to vary the input into a regulator (i.e. to adjust the speed of the motor using PWM, which as far as I know is the only way to do this programmatically), would not the voltage regulator nullify this effect? My (limited!!) understanding being that the regulators job is to maintain a constant output?


Good morning,

Not here it ain't! Well, it is now, but not when you posted. :grinning:

Here's the problem. You have no specifications on these devices. Specifically, how much current they draw. I trust you have a digital multimeter, if not, stop until you have purchased one!

You have not explained what your "3.3v output" is - if it is the 3.3 V terminal on a UNO or similar, forget it! You need for a start, to have a 5 V supply for your system, so you first determine the motor current at 3.3 V (temporarily using the 3.3 V source, but you need to measure not only the motor current, but the "3.3 V" itself because if it is the connection on a UNO, it probably will not be 3.3 V when you connect a motor to it).

Once you know that, you calculate a series resistor to drop 1.7 V at that current, and you power the motor from 5 V, using of course your switching transistors as the Arduino cannot power them directly. Please confirm your circuit diagram.

Thank you Paul

Unfortunately the issue I came across quite quickly, the lack of info on them..

I'm using Nano for the pre-prod development, but I was prototyping on Uno and Mega

3.3 is supplied separately - I have a battery pack that offers both 5 and 3.3 outputs on different rails.

Your last comment.. 'using the transistors' have I missed (another.. sorry) fundamental? If I connected the base to a PWM pin, that would have the same effect as though I had connected something directly to that pin... wouldn't it?

Your last comment… ‘using the transistors’ have I missed (another… sorry) fundamental? If I connected the base to a PWM pin, that would have the same effect as though I had connected something directly to that pin… wouldn’t it?

If your transistor has a ‘base’ then it is a bipolar transistor. Connecting the base to a pin is like connecting a short circuit to the pin. You must have a base resistor. It’s much easier to use MOSFETs as they don’t require the resistor (although that does cause long-term reliability problems, so many people here will recommend you use a resistor too.)

Those motors are likely to be brushless motors with an integrated controller. They will perform very badly on PWM. They may also perform badly on lower voltage as the integrated controller will just use more current to keep the motor spinning at the ideal RPM. That kind of thing relies on resonance to work well - they will feel like almost zero output until they hit that ideal RPM and then everything resonates perfectly and you can feel the output is very strong.

Either do a lot of testing on the ones you have, with proper test equipment like a variable power supply, or buy ones that come with specifications.