Sine Wave Stepper Controller

Hello! I’ve read on the forum and around the internet that it is possible to control a stepper motor with two sine waves in quadrature. Sounds like people have been driving turntables this way very smoothly. There’s not a lot of concrete info on this technique though. I have a small amount of experience in electronics for audio and synths, so to experiment with this I have breadboarded an analogue oscillator that puts out two sine waves in quadrature. Totally great! However, before I just plug this thing into the motor that I bought from Pololu (which is this one here:, I just wanted to clarify exactly the kind of signal the motor is expecting so as not to release any magic smoke, and was hoping someone here could help.

  • This motor is rated for 3.5V, so does that mean a 3.5Vpp signal from each sine should do the trick?

  • I’m also assuming that negative voltage is no good here and that the sines need to be offset so that their negative peak hits ground, yes? Currently they swirl around 0V.

  • If the current draw is 1A/phase, does that mean I have to generate a signal that puts out that much current per cycle?

  • I’ve read that steppers like to be driven at voltages higher than their rating in order to achieve proper torque. Should I be bumping up my signal to something more than 3.5Vpp? I can boost my signal up as far as about ~27Vpp without distortion depending on how close to the rails I can coax my op-amps to go.

Thanks for taking the time, much appreciated.


If you use a typical stepper motor driver, like one of ours, in microstepping mode, it is basically like controlling the stepper motor with sine waves, albeit discretized. With that in mind, I would recommend your reading datasheets for those so you can see how they work.

I will answer your questions about controlling your stepper motor with sine wave signals in the same order you asked them:

  • Since you are not using a current limiting driver, you will probably need to limit the voltage of your signal to your stepper motor’s rated voltage, 3.5V.
  • Stepper motor drivers apply power in both polarities, i.e. they apply power such that current flows from output 1 to 2 and from output 2 to 1. That means you will want to setup your sine waves to oscillate from -3.5V to +3.5V (no offset).
  • Thinking of the signal as putting out current is not a good way to think about how a stepper motor is powered. The stepper motor has a fixed coil resistance, 3.5Ω, so when the rated voltage is applied across the inputs, the coil will draw the rated current. You will need to make sure that your test setup can supply that much current (or however much current your maximum applied voltage corresponds to), or else you could damage something.
  • With bipolar stepper motor drivers with active current limiting, like we sell, it is useful to power the driver with a higher voltage than what the stepper is rated for. You can learn more about that from the “FAQs” tab on any of our stepper motor driver product pages. However, that would be hazardous in the setup you is proposing since there is no active current limiting to prevent the motor from drawing too much power and overheating.

- Patrick

When I built an analog drive for a stepper, I drove just one side of each phase with the other side grounded through a 1 ohm 1% current-sense resistor. My drive signal had no offset so that the peak positive and negative currents were symmetrical. That’s consistent with PatrickM’s recommendation of -3.5V to + 3.5V (no offset). I also used a voltage-controlled current output. I’m not sure if that is what PatrickM is advising against, but I got the idea from the Allegro A3967 stepper driver chip, which takes feedback from a current-sense resistor on the ground side of each phase’s H-bridge. Pololu’s DRV8825 is similar. Additionally, the micro-stepping tables in the datasheets (which clearly look sinusoidal) are all stated in terms of current. That said, I think that a voltage output would be fine.

Thanks for the responses! That’s all extremely helpful, thanks for taking the time. I’ll try the straight voltage output first with the values above and see if it works.