Products for USB Sensing and Control
Products for USB Sensing and Control

2A DC Motor Phidget

ID: DCC1001_0

Control a single DC motor up to 2A with this compact and affordable Phidget. Connects to a VINT port.


Note: The DCC1001 has been replaced by the DCC1002, which has the same function and form factor, but will has a maximum motor current of 4 amps.

The DCC1001 gives you complete control of one medium sized DC motor from one of the ports on your VINT hub. You can control motor velocity, acceleration and braking strength using commands from your software. The compact and enclosed form factor of the DCC1001 makes it easy for this Phidget to fit in smaller projects while still controlling motors with current ratings of up to 2 amps. See the Connection & Compatibility tab for a list of devices with VINT ports that can connect to this Phidget.

Quadrature Encoder Input

This controller comes equipped with an encoder input that can read in the quadrature signal from an encoder attached to the shaft of your motor. Using the MotorPositionController object in our API, you can use the encoder to implement a PID control loop.

Reliability and Protection

A built in heatsink on this controller prevents it from overheating during operation.

The VINT port on this device is isolated from the rest of the board, greatly improving reliability and eliminating ground loops. Your VINT Hub and computer will also be safe in the event of a current spike coming back from the motor.

The power terminals on this device are polarity protected: if you happen to hook up the power supply backwards, the device simply won't power up and won't be damaged. There is also a 5A fuse included on-board to protect the controller in an over-current event.

Related Videos


This Phidget is a smart device that must be controlled by a VINT Hub. For more information about VINT, have a look at the VINT Primer. You can use a Phidget Cable to simply and easily connect the two devices. Here's a list of all of the different VINT Hubs currently available:

Product Board
Image Part Number Price Number of VINT Ports Controlled By
HUB0000_0 $30.00 6 USB (Mini-USB)
HUB5000_0 $60.00 6 Local Network (Ethernet or Wi-Fi)
SBC3003_0 $120.00 6

Phidget Cables

Use a Phidget cable to connect this device to the hub. You can solder multiple cables together in order to make even longer Phidget cables, but you should be aware of the effects of having long wires in your system.

Product Physical Properties
Image Part Number Price Cable Length
3002_0 $2.00 600 mm
3003_0 $1.50 100 mm
3004_0 $3.00 3.5 m
3034_0 $1.50 150 mm
3038_0 $2.25 1.2 m
3039_0 $2.75 1.8 m
CBL4104_0 $1.75 300 mm
CBL4105_0 $2.00 900 mm
CBL4106_0 $2.50 1.5 m

Power Guards

Using motor controllers with large motors can pose a risk for your power supply. If your supply does not have protective features built-in, you can use a Power Guard Phidget to prevent damage from power spikes from back EMF that is generated when motors brake or change direction. We recommend that you use the SAF2000 for any motor with a current rating between 1 and 5 amperes, and the SAF1000 for motors above 5A.

Image Part Number Price
SAF1000_0 $60.00
SAF2000_0 $10.00

DC Motors

We offer a wide variety of DC motors that can be used with this Phidget. Motors with higher gearbox ratios will have higher torque at the cost of lower speed. If you want a motor that has an encoder attached to it, skip ahead to the next table.

Product Motor Properties Physical Properties Gearbox Specifications
Image Part Number Price Maximum Speed at Rated Voltage Rated Torque Shaft Diameter Weight Gear Ratio Gearbox Type
3254_0 $10.00 230 RPM 200 g·cm 6 mm 128 g 10 : 1 Spur
3255_0 $10.00 127 RPM 310 g·cm 6 mm 133 g 18 : 1 Spur
3256_0 $11.00 46 RPM 820 g·cm 6 mm 137 g 50 : 1 Spur
3257_0 $11.00 23 RPM 1.6 kg·cm 6 mm 136 g 100 : 1 Spur
3261_0 $18.00 1080 RPM 240 g·cm 6 mm 144 g 3 1217 : 1 Planetary
3262_1 $18.00 285 RPM 900 g·cm 6 mm 170 g 13 212289 : 1 Planetary
3263_1 $20.50 78 RPM 3.1 kg·cm 6 mm 193 g 50 801895 : 1 Planetary
3264_1 $20.50 28 RPM 8.5 kg·cm 6 mm 192 g 139 1841221 : 1 Planetary
3265_0 $38.00 670 RPM 540 g·cm 8 mm 416 g 3 1217 : 1 Planetary
3266_0 $42.00 175 RPM 1.9 kg·cm 8 mm 464 g 13 212289 : 1 Planetary
3266_1 $42.00 175 RPM 1.9 kg·cm 8 mm 464 g 13 212289 : 1 Planetary
3267_0 $43.00 49 RPM 6.6 kg·cm 8 mm 526 g 50 801895 : 1 Planetary
3267_1 $43.00 49 RPM 6.6 kg·cm 8 mm 526 g 50 801895 : 1 Planetary
3268_1 $43.00 18 RPM 17.3 kg·cm 8 mm 526 g 139 184/1221 : 1 Planetary
3269_3 $69.00 588 RPM 5.1 kg·cm 12 mm 1.3 kg 4 14 : 1 Planetary
3270_1 $66.00 192 RPM 14.3 kg·cm 12 mm 1.5 kg 12 2425 : 1 Planetary
3272_2 $72.00 53 RPM 51 kg·cm 12 mm 1.7 kg 46 82125 : 1 Planetary
3273_2 $72.00 33 RPM 82.6 kg·cm 12 mm 1.7 kg 76 4964 : 1 Planetary
3274_2 $76.00 15 RPM 173 kg·cm 12 mm 2 kg 167 601625 : 1 Planetary
DCM4000_0 $40.00 3280 RPM 2.5 kg·cm 8 mm 1.4 kg
DCM4001_0 $80.00 772 RPM 10.6 kg·cm 12 mm 1.9 kg 4.25:1 Planetary
DCM4002_0 $82.00 182 RPM 45 kg·cm 12 mm 2.1 kg 18:1 Planetary
DCM4003_0 $84.00 50 RPM 162.5 kg·cm 12 mm 2.2 kg 65:1 Planetary
DCM4004_0 $50.00 3000 RPM 4.4 kg·cm 10 mm 2.7 kg
DCM4005_0 $60.00 3563 RPM 6.1 kg·cm 10 mm 3.3 kg

DC Motors with Encoders

These DC motors all have encoders attached to the rear shaft, allowing for closed-loop position control of your motor. These encoders will connect to the encoder input on the DCC1001 via the cable included with each motor.

Product Motor Properties Physical Properties Gearbox Specifications
Image Part Number Price Maximum Speed at Rated Voltage Rated Torque Shaft Diameter Weight Gear Ratio Gearbox Type
3261E_1 $48.00 1080 RPM 240 g·cm 6 mm 147 g 3 1217 : 1 Planetary
3263E_1 $50.50 78 RPM 3.1 kg·cm 6 mm 193 g 50 801895 : 1 Planetary

DC Linear Actuators

Linear actuators are simply DC motors that are hooked up to a linear screw which causes the shaft to move laterally instead of rotating. Unlike a rotary DC motor, linear actuators have a minimum and maximum position at which the shaft cannot contract or extend any further. On its own, the motor would not be smart enough to stop before attempting to push beyond these limits, possibly damaging the motor. That's why each linear actuator also has a built-in feedback potentiometer so you can monitor the position of the shaft and prevent the actuator from stalling out at its limits. The potentiometer can be read by the analog input on the DCC1000.

Product Motor Properties Electrical Properties Physical Properties
Image Part Number Price Stroke Length Maximum Speed Peak Power Point Peak Efficiency Point Gear Ratio Rated Voltage Weight
3545_0 $100.00 150 mm 24 mm/s 350 N 24 V DC 995 g
3546_0 $100.00 150 mm 10 mm/s 750 N 24 V DC 1 kg
3547_0 $100.00 300 mm 24 mm/s 350 N 24 V DC 1.2 kg
3570_0 $80.00 50 mm 32 mm/s (@ 16 mm/s) 50 N (@ 24 mm/s) 24 N 35:1 12 V DC 56 g
3571_0 $80.00 100 mm 32 mm/s (@ 16 mm/s) 50 N (@ 24 mm/s) 24 N 35:1 12 V DC 74 g
3572_0 $80.00 140 mm 32 mm/s (@ 16 mm/s) 50 N (@ 24 mm/s) 24 N 35:1 12 V DC 84 g
3573_0 $80.00 50 mm 20 mm/s (@ 10 mm/s) 75 N (@ 15 mm/s) 38 N 63:1 12 V DC 56 g
3574_0 $80.00 100 mm 20 mm/s (@ 10 mm/s) 75 N (@ 15 mm/s) 38 N 63:1 12 V DC 74 g
3575_0 $80.00 140 mm 20 mm/s (@ 10 mm/s) 75 N (@ 15 mm/s) 38 N 63:1 12 V DC 84 g
3576_0 $80.00 50 mm 8 mm/s (@ 4 mm/s) 175 N (@ 7 mm/s) 75 N 150:1 12 V DC 56 g
3577_0 $80.00 100 mm 8 mm/s (@ 4 mm/s) 175 N (@ 7 mm/s) 75 N 150:1 12 V DC 74 g
3578_0 $80.00 140 mm 8 mm/s (@ 4 mm/s) 175 N (@ 7 mm/s) 75 N 150:1 12 V DC 84 g

Power Supplies

This Phidget requires a power supply between 8 and 30V DC. We recommend that you use a 12V DC power supply for smaller motors and a 24V supply for larger motors. Check your motor's specifications if you're not sure. For best performance, you should get 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 Current Output Voltage Wall Plug Style
3022_0 $10.00 2 A 12 V Australian
3023_1 $10.00 2 A 12 V European
3024_1 $10.00 2 A 12 V North American
3025_0 $10.00 2 A 12 V British
3084_0 $1.50 500 mA 12 V European
3085_0 $1.50 500 mA 12 V North American
3086_0 $10.00 1 A 24 V North American
PSU4013_0 $20.00 2.5 A 24 V
PSU4014_0 $40.00 5 A 24 V
PSU4015_0 $20.00 1 A 24 V
PSU4016_0 $40.00 15 A 24 V
PSU4017_0 $75.00 15 A 24 V
PSU4018_0 $20.00 5 A 12 V

Power Supply Pigtail

You can use a pigtail wire if you want to avoid removing the barrel jack connector from your supply's cord:

Product Physical Properties
Image Part Number Price Connector A Connector B Cable Length Cable Gauge
3031_0 $2.75 Power Jack 5.5 x 2.1mm (Female) 2 Loose Wires 250 mm 20 AWG

Getting Started

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

Next, you will need to connect the pieces:

DCC1001 Functional.jpeg
  1. Connect the DCC1001 to the VINT Hub using the Phidget cable.
  2. Connect the motor to the Phidget's output terminals.
  3. Connect the VINT Hub to your computer with a USB cable.
  4. (Optional) If your motor has an encoder, connect it to the encoder port on the DCC1001.
  5. Connect the power supply to the DCC1001's power terminals.

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

Using the DCC1001

Phidget Control Panel

In order to demonstrate the functionality of the DCC1001, 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.


To open the Phidget Control Panel on Windows, find the Ph.jpg icon in the taskbar. If it is not there, open up the start menu and search for Phidget Control Panel

Windows PhidgetTaskbar.PNG


To open the Phidget Control Panel on macOS, open Finder and navigate to the Phidget Control Panel in the Applications list. Double click on the Ph.jpg icon to bring up the Phidget Control Panel.

For more information, 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 DCC1001.

First Look

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

DCC1001 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.

The objects associated with the DCC1001 are as follows:

  • DC Motor Controller: Controls the velocity and current of the motor.
  • Encoder Input: Reads encoder input so you can implement closed-loop control of the motor.
  • Position Controller: A built-in position controller.

DC Motor

Double-click on the DC Motor object, labelled DC Motor Phidget, in order to run the example:

DCC1001 DCMotor 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:

  • Drag the Target Velocity slider from -1 (full reverse) to 1 (full forward) to make the motor move.
  • Manipulate the Acceleration slider to increase/decrease the amount of time it takes the DC Motor to reach a target velocity.
  • Manipulate the Current Limit slider to limit the amount of current provided to the motor. Higher current means more torque, but more power consumption.
  • Manipulate the Braking Duty Cycle slider to change how hard the motor brakes.
  • Manipulate the Current Regulator Gain: see the technical section for details on this.
  • Turn the fan on and off by selecting the fan mode. Auto mode will have the fan turn on whenever the controller starts to heat up.


Double-click on the Encoder object, labelled Encoder Input, in order to run the example:

DCC1001 Encoder 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:

  • Position Change: the number of ticks (or quadrature cycles) that have occurred since the last change event.
  • Time Change: the amount of time in milliseconds that has elapsed since the last change event.
  • Position: the total position in ticks relative to where the encoder was when the window was opened.
  • Index Position: the position where the index channel was last encountered. Some encoders do not support index, check your encoder's datasheet for more information.
  • Velocity: the average velocity in rotations per second. A CPR must be specified to enable this functionality.
  • Specify a counts per revolution (CPR) value to enable velocity calculation.
  • Modify the change trigger and/or data interval value by dragging the sliders. For more information on these settings, see the data interval/change trigger page.

Position Controller

Double-click on the Position Controller object in order to run the example:

DCC1001 Position 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:

Note: a video describing the use of this program is available below in the Technical Details section.


  • It is recommended to set the Rescale Factor first. This will change the units of your controller. For information on the rescale factor, visit the technical details section below.
  • You can set the control parameters Kp, Ki and Kd in order to change the behavior of the control loop. You can save these variables into the program so you don't have to re-enter them manually (NOTE: This does not store the settings on the DCC1001, it simply saves them inside the control panel program, so you'll have to re-enter them if it's used on another computer).
  • The Velocity Limit and '"Acceleration can be set in the top right. These values will be used to create a motion profile that the controller will try to track.
  • Use the Deadband to determine how exactly the controller will try to reach the target position. View the API for a detailed description of how Deadband works.
  • Click on Show Other Motor Settings' to access Stall Velocity. This is a safety feature which protects your hardware. View the API for a detailed description of how Stall Velocity works.


  • Change the Target Position to select which position you want the motor to try to reach.
  • Press the Engage Motor button to allow the motor to start, and press again to stop it.
  • You can Zero Position to add a position offset which will return the motor's position to 0.


  • You can view the control data on the graph. The green line is the selected target position, and the blue line is the motor's actual position as reported by the Hall Effect sensors. When the two lines meet, the motor will stop moving and attempt to hold that position, even if moved by an external force. You can Clear the graph, and customize the number of data points shown at any given time.

Finding The Addressing Information

Before you can access the device in your own code, and from our examples, you'll need to take note of the addressing parameters for your Phidget. These will indicate how the Phidget is physically connected to your application. For simplicity, these parameters can be found by clicking the button at the top of the Control Panel example for that Phidget.

The locate Phidget button is found in the device information box

In the Addressing Information window, the section above the line displays information you will need to connect to your Phidget from any application. In particular, note the Channel Class field as this will be the API you will need to use with your Phidget, and the type of example you should use to get started with it. The section below the line provides information about the network the Phidget is connected on if it is attached remotely. Keep track of these parameters moving forward, as you will need them once you start running our examples or your own code.

All the information you need to address your Phidget

Using Your Own Program

You are now ready to start writing your own code for the device. The best way to do that is to start from our examples:

This Phidget is compatible with the DCMotor Examples, the Encoder Examples and the MotorPositioncontroller Examples.

Once you have your example, you will need to follow the instructions on the page for your programming language to get it running. To find these instructions, select your programming language from the Programming Languages page.

Technical Details

Control Loop Parameters

In order to get the desired behavior from your controller, you will have to tune your control parameters. This video explains the tuning procedure and gives information on how the controller works.

Further Reading

For more information, have a look at the DC Motor and Controller Primer.

What to do Next

  • Programming Languages - Find your preferred programming language here and learn how to write your own code with Phidgets!
  • Phidget Programming Basics - Once you have set up Phidgets to work with your programming environment, we recommend you read our page on to learn the fundamentals of programming with Phidgets.

Product Specifications

Board Properties
Controlled By VINT
Controller Properties
Motor Type DC Motor
Number of Motor Ports 1
Acceleration Min 0.1 % Duty Cycle/s
Acceleration Max 100 % Duty Cycle/s
PWM Frequency 25 kHz
Sampling Interval Min 100 ms/sample
Sampling Interval Max 60 s/sample
Acceleration Resolution 0.1 Duty Cycle/s
Velocity Resolution 0.001 Duty Cycle
Current Limit Resolution 5.6 mA
Acceleration Time Min 20 ms
Acceleration Time Max 20 s
Electrical Properties
Continuous Motor Current Max 2 A
Supply Voltage Min 8 V DC
Supply Voltage Max 30 V DC
Current Consumption (Unconfigured) (VINT Port) 500 μA
Current Consumption Max (VINT Port) 2 mA
Power Consumption (Unconfigured) 288 mW
Power Consumption motor power plus 700 mW
Encoder Interface
Number of Encoder Inputs 1
Encoder Interface Resolution x4
Count Rate Max 400000 pulses/s
Sampling Interval Min 50 ms/sample
Sampling Interval Max 60 s/sample
Encoder Input Low Voltage Max 2.4 V DC
Encoder Input High Voltage Min 2.6 V DC
Time Resolution 1 μs
Physical Properties
Recommended Wire Size 16 - 26 AWG
Operating Temperature Min -40 °C
Operating Temperature Max 85 °C

Software Objects

Channel NameAPIChannel
DC Motor Controller DCMotor 0
Encoder Input Encoder 0
Position Controller MotorPositionController 0


Back Forward
Print this API


Library & Driver Downloads

Code Samples


DCMotor C Multiple Download
DCMotor C# Windows Download
DCMotor Java Multiple Download
DCMotor Java Android Download
DCMotor JavaScript Nodejs Download
DCMotor JavaScript Browser Download
DCMotor Objective-C macOS Download
DCMotor Swift macOS Download
DCMotor Swift iOS Download
DCMotor Python Multiple Download
DCMotor Visual Basic .NET Windows Download
DCMotor Max/MSP Multiple Download
Encoder C Multiple Download
Encoder C# Windows Download
Encoder Java Multiple Download
Encoder Java Android Download
Encoder JavaScript Nodejs Download
Encoder JavaScript Browser Download
Encoder Objective-C macOS Download
Encoder Swift macOS Download
Encoder Swift iOS Download
Encoder Python Multiple Download
Encoder Visual Basic .NET Windows Download
Encoder Max/MSP Multiple Download
MotorPositionController C Multiple Download
MotorPositionController PID Tuner C# Windows Download
MotorPositionController Java Multiple Download
MotorPositionController JavaScript Nodejs Download
MotorPositionController JavaScript Browser Download
MotorPositionController Objective-C macOS Download
MotorPositionController Swift macOS Download
MotorPositionController Swift iOS Download
MotorPositionController Python Multiple Download
MotorPositionController Visual Basic .NET Windows Download
MotorPositionController Max/MSP Multiple Download


Product History

Date Board Revision Device Version Comment
February 2018 0 114 Product Release

Have a look at our DC motor controllers:

Product Controller Properties Electrical Properties Board Properties
Image Part Number Price Number of Motor Ports Velocity Resolution Acceleration Resolution Continuous Motor Current Max Controlled By
1064_1B $115.00 2 0.79 % Duty Cycle 1.9 % Duty Cycle/s (per motor) 14 A USB (Mini-USB)
1065_1B $75.00 1 0.39 % Duty Cycle 24.5 % Duty Cycle/s 5 A USB (Mini-USB)
DCC1000_0 $75.00 1 0.001 Duty Cycle 1 % Duty Cycle/s 25 A VINT
DCC1002_0 $40.00 1 0.001 Duty Cycle 0.1 Duty Cycle/s 4 A VINT
DCC1003_0 $60.00 2 0.001 Duty Cycle 0.1 Duty Cycle/s (per motor) 4 A VINT