Products for USB Sensing and Control

Products for USB Sensing and Control


Unit 1 - 6115 4 St SE
Calgary AB  T2H 2H9
+1 403 282-7335

PhidgetStepper Bipolar HC

ID: 1067_0

Accurately control one bipolar stepper motor with this controller. This board comes with a number of safety features.


Quantity Available: 278

Qty Price
5 $90.25
10 $85.50
25 $76.00
50 $66.50
100 $61.75
250 $57.00
500 $52.25
1000 $47.50

The 1067 – PhidgetStepper Bipolar HC allows you to control the position, velocity, and acceleration of one bipolar stepper motor. This is the product you want to use to control larger industrial steppers or for applications that need a lot of torque.

The 1067 can also be used in applications that require very precise positioning. It uses micro-stepping at all times to ensure smooth acceleration.

This board is USB isolated, protecting your system from ground loops, and comes with a built-in replacable ATP Blade Terminal fuse to protect against an over-current scenario.

Comes Packaged with



Make sure the power supply is unplugged before attaching or removing wires from the terminal blocks. Failure to do so could cause permanent damage to the PhidgetStepper board.

When using larger motors with heavy loads or high speeds, you should take caution because the back EMF generated when stalling or changing directions could damage the motor controller. As a rule of thumb, if the kinetic energy of your application exceeds 10 joules, you are at risk of damaging the controller. Feel free to contact us for advice for such applications.

Product Specifications

Controller Properties
API Object Name Stepper
Motor Type Bipolar Stepper
Number of Motor Ports 1
Motor Position Resolution 116 Step (40-Bit Signed)
Position Max ± 1E+15 1/16 steps
Stepper Velocity Resolution 1 1/16 steps/sec
Stepper Velocity Max 250000 1/16 steps/sec
Stepper Acceleration Resolution 1 1/16 steps/sec²
Stepper Acceleration Min 2 1/16 steps/sec²
Stepper Acceleration Max 1E+07 1/16 steps/sec²
Board Properties
Controlled By USB
API Object Name Stepper
Electrical Properties
Available Current per Coil Max 4 A
Supply Voltage Min 10 V DC
Supply Voltage Max 30 V DC
Current Consumption Min 25 mA
USB Speed Full Speed
Physical Properties
Power Jack 5.5 x 2.1mm Center Positive
Recommended Wire Size (Motor Terminal) 12 to 26 AWG
Recommended Wire Size (Power Terminal) 12 to 26 AWG
Operating Temperature Min -20 °C
Operating Temperature Max 85 °C

Software Objects

Channel NameAPIChannel
Bipolar Stepper Controller Stepper 0


Back Forward
Print this API


Code Samples

Stepper C Multiple Download
Stepper C# Windows Download
Stepper Java Multiple Download
Stepper JavaScript Any Download
Stepper Objective-C macOS Download
Stepper Python Multiple Download
Stepper Visual Basic .NET Windows Download


Product History

The 1067 - PhidgetStepper HC replaced our previous bipolar stepper controller, the 1063 - PhidgetStepper Bipolar. The following features have changed:
  • Increased maximum velocity and acceleration, allowing you to drive your stepper motor even faster
  • Increased available motor current for larger motors
  • Added safety features such as power isolation and a fuse for surge protection
  • Now micro-steps at all speeds for smoother acceleration
  • Removed motor current sensing
  • Removed digital inputs
Date Board Revision Device Version Comment
January 20130200Product Release
October 20150201OS X El Capitan USB fix

Getting Started

Welcome to the 1066 user guide! In order to get started, make sure you have the following hardware on hand:

Next, you will need to connect the pieces:

1067 1 Connecting The Hardware.jpg
  1. Connect the motor to the PhidgetStepper's input terminal. If you are having difficulty with the wiring, refer to the technical section.
  2. Push the fuse into the fuse holder beside the power terminals if it isn't already.
  3. Connect the power supply to the board using the barrel connector or the power terminal block.
  4. Power supplies with higher current (more than 2.5 Amps) should be wired directly to the terminal block.
  5. Connect the Phidget to your computer using the USB cable.

Now that you have everything together, let's start using the 1067!

Using the 1067

Phidget Control Panel

In order to demonstrate the functionality of the 1067, the Phidget Control Panel running on a Windows machine will be used.

The Phidget Control Panel is available for use on both macOS and Windows machines. If you would like to follow along, first take a look at the getting started guide for your operating system:

Linux users can follow the getting started with Linux guide and continue reading here for more information about the 1067.

First Look

After plugging the 1067 into your computer and opening the Phidget Control Panel, you will see something like this:

1067 Panel.jpg

The Phidget Control Panel will list all connected Phidgets and associated objects, as well as the following information:

  • Serial number: allows you to differentiate between similar Phidgets.
  • Channel: allows you to differentiate between similar objects on a Phidget.
  • Version number: corresponds to the firmware version your Phidget is running. If your Phidget is listed in red, your firmware is out of date. Update the firmware by double-clicking the entry.

The Phidget Control Panel can also be used to test your device. Double-clicking on an object will open an example.

Stepper Motor

Double-click on the Stepper object, labelled PhidgetStepper Bipolar HC, in order to run the example:

1067 Stepper Example.jpg

General information about the selected object will be displayed at the top of the window. You can also experiment with the following functionality:

  • Toggle the Engage button to provide power to the motor coils.
  • By default, motor position, velocity, and acceleration are measured in sixteenths of a step. If you want to use different units, change the value in the Rescale Factor textbox.
  • Use the Target Position slider to set a new target position. Change the Acceleration and Velocity sliders to speed up or slow down the 1067's approach.
  • Use the Current Limit slider to change the maximum amount of current supplied to the motor's coils. See your motor's datasheet for the recommended coil current.
  • Select the Velocity (Continuous) Control tab for continuous rotation instead of specifiying a position.

Technical Details

How does the 1067 control Stepper Motors?

The 1067 can be used to control a bipolar stepper motor with 4, 6, or 8 wires.

The PhidgetStepper Bipolar is most effective when used with stepper motors designed to be driven with a chopper drive stepper controller. These motors are often large, with a rectangular industrial appearance. The specifications of these motors are often confusing and may seem contradictory. Our users are often confused attempting to relate the specifications of their motor to the capabilities of the 1067. If you are in doubt if your motor will work with the 1067, call us.

When the steppers are first engaged from software, the stepper motor likely will not be at the same state as the default output state of the controller. This will cause the stepper to ‘snap’ to the position asserted by the controller - potentially moving by 2 full steps.

Unlike the 1063, the 1067 will always micro-step, moving 1/16th of a step for each change in the position variable.

To avoid the use of floating point in the APIs, the position, velocity and acceleration parameters are expressed in microsteps (1/16th steps), instead of full steps. If your application wants to move the motor by 1 full step, you change the position by 16.

Open and Closed Loop Control

Because stepper motors do not have the inherent ability to sense their actual shaft position, they are considered open loop systems.

This means that the value contained in the current position property is merely a count of the number of steps that have occurred towards the target value; it can not be relied upon as a measure of the actual shaft angle, as external forces may also be affecting the motor.

There are several ways of overcoming this drawback. The simplest is to allow the motor load to depress a limit switch located at a known position. This can be used to fire an event in software to recalibrate the shaft position values. A more elegant solution might involve the mounting of an optical encoder on the shaft and the development of a control system.

How to Connect your Stepper to the 1067

Bipolar Steppers motors are available in 4, 6 or 8 wire configurations. Driving a motor in the Bipolar Configuration produces maximum torque. The word Bipolar means that the controlling electronics have to be able to produce a current flow in either direction in each coil, to produce magnetic fields in opposite directions.

4 Wire Stepper Motors

A 4 wire Stepper motor can only be controlled as a bipolar. There are two coils, with the ends of each coil brought out. By applying current to the two coils in sequence, and changing the direction of current flow, the motor can be made to rotate.

Determining how to connect a 4 wire stepper to the 1067 can be done by following this procedure. Suppose we have four wires: red, green, yellow and blue.

Start by measuring the resistance between all the wires. Below is a sample table of resistance data, in ohms. This table contains example values, your readings may be different but should still produce a similar pattern.

1063 1 Motor Types 4wire.jpg
Wire Color Green Blue Yellow Red
Green 30
Yellow 30

Looking at the table, you see that there are two pairs of wires (Green-Blue, and Yellow-Red), with roughly the same resistance measured between the wires in each pair. Pick one of the four wires and wire it to the A terminal. The other wire in this pair is connected to the B terminal. At random, wire the other pair to C and D. The motor will turn in clockwise or counter-clockwise rotation. Swapping the A and B wires or the C and D wires will change whether the motor considers “forward” to mean clockwise or counter-clockwise rotation (Remember, steppers can be run in forward or reverse by choosing a target position greater than or less than the current position).

6 Wire Stepper Motors

In a 6 – wire bipolar motor, there is two + wires, one for each coil, which are the center taps for each coil. You will need to isolate which are the center tap wires and the corresponding wires for their coil.

These center taps are left unconnected to operate as a bipolar. Let’s assume our six wire stepper motor wires are colored as follows: red, green, blue, white, purple, and yellow.

We measure the resistance between all wires and are presented with the following values in ohms (these are simply example values):

1062 1 Motor Types 6wire.jpg

Wire Color Red White Yellow Purple Green Blue
Red 10 10
White 10 10
Yellow 20
Green 20

Looking at our table, we can see our pattern. The red wire has the same resistance to the green and blue wires. The white wire has the same resistance to the yellow and purple wire. Red, green, and blue are for one pole, and white, yellow, and purple are the other pole. The red and white wires are the center of their coils. Leave the red/white wires unconnected, and follow the instructions for connecting a 4-Wire Bipolar Motor as described earlier in this section.

There are in fact two valid combinations, one that will produce a clockwise rotation in the stepper motor for increasing position and one that will produce counter-clockwise rotation. Swapping the A and B wires or the C and D wires will change whether the motor considers “forward” to mean clockwise or counter-clockwise rotation.

8 Wire Stepper Motors

8 Wire Motors are very difficult to wire up if you do not have a schematic showing how the wires are connected to the internal coils. Only follow these instructions if you are really desperate.

In an 8 wire motor, the coils are split, and we have to reconnect the coils, to reduce them to a 4 wire. Assume our eight wire stepper motor wires are colored as follows: red, yellow, purple, orange, blue, green, brown, and white. In an 8-wire stepper motor, these wires would be part of 4 coils, 2 wires per coil. We need to determine the cable pairings.

We measure the resistance between each wire and are presented with the following values in ohms (these are simply example values):

1062 1 Motor Types 8wire.jpg
Wire Color Orange Red Yellow Purple Blue Green Brown White
Orange 1
Red 1
Yellow 1
Purple 1

This table tells us which wires are parts of a coil. From the table we can tell that red/green, yellow/brown, purple/white, and orange/blue are the coils. We are now left with the following situation; we need to determine the proper orientation of the wires to determine our connections. Of each pair, one of the wires will be assigned to A, B, C, or D, and the other wire will be connected to another pair. The number of combinations to be tried to see if they produce rotation is large, but can be reduced to a maximum of 96 possibilities by following these steps:

  1. Choose one wire from a pair to connect to A. (2 possibilities)
  2. Choose one wire of the other pairs (6 possibilities) and connect to B. The other wire from this pair is connected to the wire from Step 1 not connected to A.
  3. Choose one wire from the two remaining pairs (4 possibilities) and connect to C.
  4. Choose one wire from the remaining pair (2 possibilities) and connect to the wire from Step 3 not connected to C. The remaining wire from this pair is connected to D.
  5. After trying each permutation, engage the motor from software and try to rotate it. Do not connect the pairs to anything - as if you were using a 6-wire stepper in bipolar mode.

If you attempt to use this algorithm, build a table of permutations beforehand and proceed in a systematic way.

There are a total of 96 wiring combinations, of which there are 2 valid combinations where one will cause a clockwise motor rotation and the other will cause a counter-clockwise rotation.

If you are not using a Phidget stepper, we suggest consulting any manuals or data sheets that are associated with your particular motor in order to determine the proper wiring for your motor.

Choosing a Power Supply Voltage

The 1067 can operate from 10 to 30 VDC. It is able to reduce the voltage during operation if your motor requires less, but it cannot increase the voltage. First, find the resistance of the coils in your motor. We will assume 4 Ohms. Add 0.5 Ohms to this to account for the electronics on the 1067. Decide the maximum current you want to push through the coils.

This current limit is per coil, and you set this through the software API when you write your application. The maximum current for your stepper is part of the motor specification - you can use the stepper with less current, to reduce power consumption, but you will get reduced torque. We'll assume the limit for this example is 2 Amps. Multiply 4.5 Ohms * 2 Amps = 9 Volts. The minimum voltage you can operate this motor at will be 9 Volts + 0.5 Volts for the controller. If the voltage you provide is less than what is required for the motor (but still more than 9 volts), the motor will still run, but not at full spec, and may not step as smoothly as it could.

For more information about how supply voltage affects your motor's maximum speed and torque, check the Stepper Motor Primer.

Setting Current Limit

The 1067 allows the current applied to the motor to be programmatically set. This is important - if the current limit is set too high, the motor’s internal resistance will cause the sine-wave approximations used to implement microstepping to clip at the maximum current possible, given your motor/supply voltage. This clipping will cause rough operation, or prevent the motor from turning. If the limit is set too low, the motor may not be able to handle it’s load, by missing steps, or not turning at all at high accelerations.

1063 1 Current Limiting.jpg

For more information about setting the current limit, check the Stepper Motor Primer.

Continuous Rotation

A stepper motor can be caused to rotate continuously by simply setting the motor position property to an extremely large number of steps. The valid range of values for the motor position property is large enough to be able to cause the motor to continuously turn at maximum velocity for several years. You could also reset the current position variable whenever the motor reaches a certain position. If the target position is kept the same, this will also produce continuous rotation.

Saving Power

Holding torque is the amount of torque required to rotate the motor ‘against it’s will’ when the full rated current is flowing through the coils. If current consumption / heating is a problem, and full holding torque is not required, the Current Limit can be decreased in software when the motor is not moving. Holding torque will decrease linearly with the Current Limit.

There is also a small resistance to movement within the motor even when there is no current, called Detent Torque. This may be sufficient to prevent rotation in your application, particularly if the stepper has a gearbox on it.

If the motor is not supporting a load or is not required to maintain a specific angle, it is recommended to set the Enable property to false. This will allow the motor shaft to rotate freely, but the present angle may be lost if forces on the motor-shaft are greater than can be resisted by the detent torque of the unpowered motor.

High Precision Applications

Stepper motor precision is limited by the manufacturing process used to build them. Errors in the rotor and coils will cause some degree of inaccuracy. In our experience, inexpensive stepper motors will often have positioning errors approaching a half-step. Gearing a stepper motor down with a gearbox will reduce this error proportional to the reduction ratio of the gearbox.

Synchronization of Multiple Motors

Many applications call for several steppers motors operating in unison - for example, operating a CNC table, or a robot arm. Highly precise synchronization of steppers using the PhidgetStepper is not possible, as the sequencing will be affected by the real-time performance of your operating system. Each stepper is controlled as a independent unit, so there is no way of arranging for a particular action to happen to all motors at the same time. Typical jitter can be 10-30mS.

Compatibility Guidelines

When looking for a motor that will be compatible with the 1067, check the motor's data sheet and make sure it meets the following specifications.

  • Bipolar motor - While the 1067 can control some six-wire unipolar motors, we recommend you look for bipolar stepper motors.
  • 4, 6, or 8-wire motor - A 5-wire motor cannot be used with the 1067, because the coils of the motor are connected internally.
  • Rated/Recommended Voltage - If the motor comes with a rated or recommended voltage, it should be no more than 30 volts, and you should use a power supply that can output that voltage.
  • Rated Current - The motor should be rated for a maximum of 4A per coil.


If your stepper motor is not behaving correctly, you can use a multimeter to determine whether it is the controller or the motor that is at fault.

Disconnect the motor and set the current limit to 0. Set the target position to 7 and measure the voltage difference between the A and B terminals it should be either -12, or +12V assuming you are using a 12V power supply (just depending on which terminal you have the positive multimeter lead connected to). Then set the target position to 8, the voltage should drop to 0, and it will go to the opposite at 9 (-12 or +12). This pattern will repeat for 39,40,41 and 71,72,73 and 103,104,105 etc... in increments of 32. If this is behaving as expected then the problem is probably with how you have connected your motor, or your code.

Further Reading

For more information about stepper motors, check the Stepper Motor and Controller Primer.

What to do Next

  • Software Overview - Find your preferred programming language here to learn how to write your own code with Phidgets!
  • General Phidget Programming - Read this general guide to the various aspects of programming with Phidgets. Learn how to log data into a spreadsheet, use Phidgets over the network, and much more.
  • Phidget22 API - The API is a universal library of all functions and definitions for programming with Phidgets. Just select your language and device and it'll give you a complete list of all properties, methods, events, and enumerations that are at your disposal.


We do not carry enclosures for the 1064_1, because motor controllers are prone to overheating when kept in enclosed spaces for extended periods of time with no airflow.

Bipolar Stepper Motors

The 1067 can control both unipolar and bipolar motors, but in almost all cases you're better off with a bipolar motor due to their increased power and more precise step angles. If you care about torque, large motors with high gear ratios are your best bet. If you car about speed, motors with no gearbox and high step angles are better. If you want precision, steppers without gearboxes and low step angles are best because while gearboxes do result in smaller steps, they also introduce a flat 1-3 degrees of positional error due to backlash in the gears.

Product Motor Properties Electrical Properties Physical Properties Gearbox Properties
Image Part Number Price Step Angle Rated Torque Maximum Speed (w/1067 Motor Controller) Recommended Voltage Shaft Diameter Weight Gear Ratio
3303_0 $15.00 1.8° 4.2 kg·cm 4688 RPM 12 V DC 5 mm 332 g
3304_0 $15.00 3 34° 590 g·cm 4105 RPM 12 V DC 5 mm 171 g
3320_0 $16.00 1.8° 520 g·cm 426 RPM 12 V DC 5 mm 111.4 g
3321_0 $36.00 0.067° 14 kg·cm 120 RPM 12 V DC 6 mm 217.5 g 26 103121 : 1
3322_0 $38.00 0.018° 32 kg·cm 35 RPM 12 V DC 6 mm 243.6 g 99 10442057 : 1
3323_0 $16.00 1.8° 1.2 kg·cm 2340 RPM 12 V DC 5 mm 200 g
3324_0 $16.00 1.8° 3.3 kg·cm 4130 RPM 12 V DC 5 mm 289 g
3325_0 $40.00 0.35° 18 kg·cm 904 RPM 12 V DC 8 mm 457 g 5 211 : 1
3326_0 $42.00 0.13° 30 kg·cm 295 RPM 12 V DC 8 mm 502 g 13 212289 : 1
3327_0 $44.00 0.067° 30 kg·cm 174 RPM 12 V DC 8 mm 503 g 26 103121 : 1
3328_0 $46.00 0.035° 48 kg·cm 63 RPM 12 V DC 8 mm 564 g 50 43974913 : 1
3329_0 $48.00 0.018° 48 kg·cm 34 RPM 12 V DC 8 mm 564 g 99 10442057 : 1
3330_0 $28.00 0.9° 11.2 kg·cm 2250 RPM 12 V DC 14 695 g
3331_0 $20.00 1.8° 11 kg·cm 3000 RPM 12 V DC 14 686 g
3332_0 $70.00 0.42° 46.6 kg·cm 375 RPM 12 V DC 12 mm 1.2 kg 4 14 : 1
3333_0 $72.00 0.12° 150 kg·cm 116 RPM 12 V DC 12 mm 1.3 kg 15 310 : 1
3334_0 $74.00 0.023° 240 kg·cm 25 RPM 12 V DC 12 mm 1.5 kg 76 4964 : 1
3335_0 $60.00 1.8° 30 kg·cm 200 RPM 30 V DC 12 mm 1.8 kg
3336_0 $80.00 1.8° 106 kg·cm 1500 RPM 30 V DC 58 5.2 kg
3340_0 $20.00 0.9° 3.3 kg·cm 2344 RPM 12 V DC 5 mm 288 g

Power Supplies

This Phidget requires a power supply between 10 and 30V DC. We recommend that you use a 12V DC power supply for small steppers and a 24V DC supply for larger ones. If you're not sure, check the data sheet for your motor for the recommended power supply voltage (not to be confused with the coil voltage, which is usually much lower). For best results, we recommend getting a 5 amp supply. Select the power supply from the list below that matches your region's wall socket type.

Product Electrical Properties Physical Properties
Image Part Number Price Power Supply Voltage Min Power Supply Voltage Max Power Supply Current Wall Plug Style
3022_0 $10.00 11.4 V DC 12.6 V DC 2 A Australian
3023_1 $10.00 11.4 V DC 12.6 V DC 2 A European
3024_1 $10.00 11.4 V DC 12.6 V DC 2 A North American
3025_0 $10.00 11.4 V DC 12.6 V DC 2 A British
3080_0 $25.00 11.4 V DC 12.6 V DC 5 A Australian
3081_0 $25.00 11.4 V DC 12.6 V DC 5 A European
3082_0 $25.00 11.4 V DC 12.6 V DC 5 A North American
3083_0 $25.00 11.4 V DC 12.6 V DC 5 A British
3084_0 $6.75 11.4 V DC 12.6 V DC 500 mA European
3085_0 $6.75 11.4 V DC 12.6 V DC 500 mA North American
3086_0 $10.00 22.8 V DC 25.2 V DC 1 A North American


The PhidgetStepper Bipolar HC comes with a 5 amp automotive fuse.

USB Cables

Use a USB cable to connect this Phidget to your computer. We have a number of different lengths available, although the maximum length of a USB cable is 5 meters due to limitations in the timing protocol. For longer distances, we recommend that you use a Single Board Computer to control the Phidget remotely.

Product Physical Properties
Image Part Number Price Connector A Connector B Cable Length
3017_1 $3.00 USB Type A USB Mini-B 280 mm
3018_0 $5.00 USB Type A USB Mini-B 1.8 m
3020_0 $12.00 USB Type A USB Mini-B 4.5 m
3036_0 $3.50 USB Type A USB Mini-B 600 mm
3037_0 $4.00 USB Type A USB Mini-B 1.2 m

Have a look at our stepper controllers:

Product Controller Properties Board Properties
Image Part Number Price Number of Motor Ports Motor Type Controlled By
1062_1 $75.00 4 Unipolar Stepper USB
1067_0 $95.00 1 Bipolar Stepper USB