I'm trying to control a DC (pager) motor with a sound signal so that I can use an audio synthesizer to control the speed of the motor. I'm hoping to modulate the speed of the motor at audio rate (1-200hz). I need to do a few things.

  1. Convert AC -> DC. A rectifier will chop the negative or fold it up, but how can I shift the waveform up, per se? What is the circuit equivalent of f(x)+1? (or will a rectifier be good enough)
  2. I could send the rectified signal straight to the motor, but this might be a waste of energy. Two strategies present themselves:
    • Use a comparator to send only the peaks
    • Use PWM (Frequency -> Pulsewidth)

Which do you think will work better? Can you think of other strategies? Should I implement this with, say, a small AVR chip, or with analog electronics?

An additional constraint is that the circuit has to be small. Ideally my motor + battery + circuit would be quarter-sized.

Any advice would be appreciated.

(I'll also need to do some lowpass filtering to avoid overwhelming the motors with information they can't respond to. Thoughts on this would be appreciated as well.)

I will be using this pager motor from Solarbotics possibly in conjunction with this one from Precision Microdrives, who specialize in vibration motors.


Use PWM to drive the pager motor, at a frequency above human hearing (so you don't get audio whine from the PWM).

You'll need to choose pager motor, and then characterize it to find what duty cycle produces what approximate frequency of spin. Each motor will be slightly different, but motors manufactured at the same time should be close.

You won't be able to get an exact frequency without some form of feedback. If you can get ahold of 3 phase pager motors then you can set the exact frequency of vibration, but they aren't easy to find, and are harder to drive properly. They are the same type of motor used to run hard drive platters and CD/DVD discs. If you rip apart a CD burner you should be able to take this motor, and you may be able to hack the motor drive circuitry to do what you need - but then you have to attach your own eccentric weight to the motor, and the whole assembly is going to be much larger than a pager motor.

But if you're just looking for a close approximation, you may be able to characterize a particular pager motor and be satisfied with that.

  • \$\begingroup\$ Thanks Adam! I'll start looking into efficient ways of doing PWM (I'm guessing tiny AVR chips are going to work best). I'll be using this shaftless pager motor: solarbotics.com/products/vpm2 possibly in conjunction with one of these: precisionmicrodrives.com/product_info.php?products_id=172 for extra impact. \$\endgroup\$ – terrace Nov 17 '09 at 4:14
  • \$\begingroup\$ Many AVR chips have PWM modes in their counter(s) and so do many other controllers. It's a very efficient system. \$\endgroup\$ – XTL Sep 14 '10 at 8:59

Quarter-sized is pretty small, you're going to need to go all surface mount components on a PCB to get to that.

Basically you want to create vibrations that is related to sound...you know there are actually some devices out there that already do this, but they aren't exactly PG-rated, so I'm not sure if I can link to them here.

Do you want to go based simply on the volume of the audio signal, or something else? Volume is pretty easy to sense, you simply measure the voltage peaks, you could do this with the ADC on an AVR for example, then use PWM to drive the motor, as you suggested. They have some pretty small AVR chips (like 8-pin TSSOP is the tiniest I think), but the tiny tiny ones might not have both ADC and PWM, so you might need a tiny bit larger.

  • \$\begingroup\$ Yeah, I've considered just buying an OhMiBod, but they're pricey! When you say "measure voltage peaks", what do you mean exactly...just a comparator? \$\endgroup\$ – terrace Nov 16 '09 at 22:14

Do this: NPN trans or two (wired parallel for current) Resistor for base (100 ohms or so) Pager from 5V to Collector of NPN trans (or whatever max the motor can handle) Bring Audio through diode with capacitor to smooth voltage out

The basic idea is you use the diode and capacitor to create a variable DC level in the capacitor. This charge will feed to the resistor to act as the base bias. This will allow you to use volume control to determine when the pager motor turns on or off.

You can play with resistor and capacitor sizes with this setup too. Just be careful not to go too low on the resistor size.

You could use a bridge to rectify audio, but one diode seems to work fine.


Are you trying to spin the motor at a rate proportional to the volume of the sound, or the frequency?

The amplitude is easy, just rectify, integrate, and amplify (diode -> cap -> amplifier).
Speed proportional to frequency is more involved. Way more involved. All I can think of is trying to implement a FFT in a micro, and using the FFT's output to control the motor via PWM. This would involve a lot of math, and a micro fast enough to do the calculations.

  • \$\begingroup\$ This is an old question, but I was trying to spin the motor at a rate proportional to the volume of the sound at a sufficient rate that frequency information would be conveyed (like a speaker). \$\endgroup\$ – terrace Aug 6 '10 at 3:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.