Is there any way to control a bipolar stepper motor using one or more DC brushed motor drivers? My only interface to the motors is setting an integer to represent their speed, ex -100 to 100. I believe this is possible as I saw examples doing this with the arduino Stepper.h library, however I am not using an arduino and cannot use any libraries (answers should be platform universal). I know stepper motors use pulses to its two coils to advance a tick; is there any way I could simulate this using timed operation to simulate these pulses? I dont need specific step precision, continuous rotation would be sufficient. Thanks.

  • \$\begingroup\$ If you can accurately switch voltages to the leads as required then you can control the stepper. \$\endgroup\$
    – Russell McMahon
    Jun 2, 2014 at 17:04
  • \$\begingroup\$ @RussellMcMahon can you provide a little more detail? I am able to regulate voltage to the motors \$\endgroup\$
    – nanogru
    Jun 2, 2014 at 17:05
  • \$\begingroup\$ @nanogru - you cannot use the simple PWM regulation, because to rotate a stepper motor you must actuate the coils in the proper sequence to accomplish electronic commutation. But if you can switch between 0 and full activation rapidly, you may be able to do the sequencing in software. The catch would be how much time overhead there is, and (if you have a bipolar motor) if you can drive both polarities. It will likely be simpler to reconfigure the microcontroller pin from being a PWM timer output to being a simple GPIO. \$\endgroup\$ Jun 2, 2014 at 17:49
  • \$\begingroup\$ @ChrisStratton Yeah, unfortunately my only interface is that PWM signal. Can you give more detail on the switching between 0 and 100 perceng power, namely the exact timing of when each coil is fired? \$\endgroup\$
    – nanogru
    Jun 2, 2014 at 17:54
  • \$\begingroup\$ See any reference on stepper motor driving. But unless you are remote commanding another chip, it's unlikely to be true that the PWM is your only interface. And if it truly is, it only means that your maximum step rate is likely to be fairly slow. \$\endgroup\$ Jun 2, 2014 at 18:16

1 Answer 1


Assuming that the outputs of your brushed drivers are a voltage or current proportional to the commanded speed, you can certainly drive a bipolar stepper with two brush drivers. Let's assume that the output of a driver set for 100 gives exactly the drive current needed by a stepper, and that -100 gives exactly the current needed, but with opposite polarity. Then the two driver channels can be driven like this:


simulate this circuit – Schematic created using CircuitLab

The position of the stepper motor is given by the relative amplitudes of the two phases. In this case, the requirement is that they be 90 degrees apart. In the figure, reading from left to right gives rotation in one direction, while reading from right to left gives rotation in the opposite direction. Always keep track of what step you are at, and only change the drives so as to move one step to the right or left.

  • \$\begingroup\$ Ok, so to make sure I understand what you're telling me: the drive signals for each coil is either full or opposite full voltage. For continuous driving I could have a software loop where for each coil the level of power is sustained for two loops, then the opposite for two loops, etc. However, one of the coils is one loop behind at all times. Correct? \$\endgroup\$
    – nanogru
    Jun 2, 2014 at 21:39
  • \$\begingroup\$ Or ahead, depending on which way you want to go. And it doesn't necessarily need to be the "full" voltage (that is, a 100 level). You will need to experiment to find out what level (0 - 100) gives your motor its rated current. Or you could do it by looking up the specs on your driver and the motor. Finally, you need to be aware of the maximum step rate which your motor will support, and this varies with mechanical load. If you try a continuous slew and it stops moving and produces a horrible buzzing, you know you're going too fast. \$\endgroup\$ Jun 2, 2014 at 22:35
  • \$\begingroup\$ ok. Will there be any noticible symptoms if I supply too much or little current to the motors? \$\endgroup\$
    – nanogru
    Jun 2, 2014 at 23:25
  • 1
    \$\begingroup\$ Too little current and the motors will not reliably move the load. Too much, and the motors will overheat. You really do need to find out what the motors are rated for. \$\endgroup\$ Jun 3, 2014 at 1:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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