Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


#430 Bipolar Linear Stepper with an H-Bridge

Testing some linear/worm-drive stepper motors salvaged from a DVD drive unit, using a bespoke H-bridge circuit and Arduino .. or pushbuttons!


Here's a quick demo..


▶️ return to the LEAP Catalog


Many CD/DVD drives use a biopolar stepper motor with worm gear for linear positioning of the laser head. The tear down of an HL GCR-8483B is a good example.

Here are two similar motor units I've scavenged. The part numbers are un-googlable internal references:

  • D4907M1F/15RF073K for upper in the picture below
  • D6124NID for the lower


Drive Specifications

I haven't been able to find any specifications for these drive units, but from my experiments I've gathered the following:

Item Specification Notes
Voltage 5V operates from ~2.5V but at that level not able to deliver much torque
Current 170mA total current while rotating without load, including h-bridge circuit
Steps per Revolution 20
Revolutions Full Travel 11 any attachment would reduce effective full travel

These measurements have only been verified for the D4907M1F/15RF073K unit.


It seems the 4 wires to the drive are connected in a somewhat unusual order: A, B, D, C.

  • A and B are a coil pair
  • D and C are a coil pair, but reversed polarity

NB: if the connections for D and C are reversed, the stepper still "works", but at only a fraction of the torque as half the time the coils are battling each other.


Driving a Bipolar Stepper

Some great resources for bipolar stepper motors:

Kevin Darrah also has a good introduction and demo of driving a bipolar stepper with push buttons:


The essence of bipolar stepper control:

  • two independent coils
  • exciting the coils in a specific sequence, generally either:
    • in 4 full steps: 1, 3, 5, 7 in the diagram below
    • or 8 half steps
  • since this requires reversing the polarity on the coils, is best achieved with an H bridge


The result is 8 combinations of drive conditions as tabulated below:

  • can be cycled in either direction for forward/reverse drive control
  • using only the 4 steps that drive both coils (1,3,5,7) is full-step control and delivers maximum torque
  • using all 8 steps provides half-step control provides more selectivity of positioning, but at a loss of torque (because half the steps only use one drive coil)
Step A B C D Full Half
1 + - - + Yes Yes
2 - + No Yes
3 - + - + Yes Yes
4 - + No Yes
5 - + + - Yes Yes
6 + - No Yes
7 + - + - Yes Yes
8 + - No Yes

The Arduino Stepper Library

The Stepper Library is used in the example SimpleHBridge.ino sketch.

It supports 4-wire bipolar steppers using an external H-bridge, and only implements full step control with the following sequence:

Step A B C D
1 1 0 1 0
2 0 1 1 0
3 0 1 0 1
4 1 0 0 1

A Bespoke H-bridge Circuit

To control a bipolar stepper, we basically need an H bridge for each coil. There are dedicated chips/modules for this - a popular one being the DRV8825 Stepper Motor Driver.

But in this case I decided to build the H bridge control circuit on a breadboard. Key points to note:

  • all MOSFETS not BJTs for more positive switching control
  • all n-channel (rather than paired p-channel, n-channel) as control and motor circuits are running at 5V, so switching the high-side nFETs is no issue.
  • I've included flyback diodes, though at these power levels they are not essential

I've included manual push-buttons in addition to Arduino control, and used these to verify drive control before hooking up the Arduino.





I hooked it up to a scope to see the control signals..


Not much to see here. However, this is a capture of the onset of one coil being activated:


Credits and References