Encoder Guide
Encoders measure the movement of mechanical parts. This guide discusses how encoders work, encoder interfaces, types of encoders, and more.
Replaced by the 1047_1 - PhidgetEncoder HighSpeed 4-Input.
The PhidgetEncoder Highspeed 4-Input can be used with a wide assortment of mechanical and optical encoders. The encoder should be of quadrature output type, indicating that there will be two quadrature output channels (usually labeled A and B) and a third output channel (only on some encoders) to signal when the index pin (a reference point for zero position or a complete revolution) has been reached.
The PhidgetEncoder Highspeed 4-Input is able to read four encoders simultaneously. Encoders are not powered up until all initialization of the device is complete. It is possible to enable some or all encoders, depending on how many of the channels are being used. This can also be used to reduce power consumption when certain encoders are not needed.
The PhidgetEncoder Highspeed 4-Input has the added ability to time the duration between a group of quadrature changes. The time is returned in microseconds. This time value can be used to calculate velocity and acceleration.
Both mechanical and optical encoders are available, with optical encoders dominating at > 100 counts per second. Review the data sheet for the encoder you are planning to use to ensure it is compatible with the PhidgetEncoder Highspeed 4-Input. Almost any incremental quadrature encoder will work but it is important to verify this before connecting it to the Phidget. Absolute encoders will not work with this device. Ideally, you should choose a quadrature encoder with a 5-pin output and the following pinout in order to be directly compatible with the 1047.
![]() |
The 1047 has the ability to power off individual encoders. This feature can be a problem if there is enough capacitance in the encoder to cause a droop in USB voltage when it is turned on. From software, you may notice the 1047 resets when an encoder is enabled.
If this is an issue, connect the Red (+5V) wire from the encoder to the 5V pin on the digital input terminal block. All 4 encoders can be attached to this pin if necessary. |
Encoder Interface | |
---|---|
API Object Name | Encoder |
Number of Encoder Inputs | 4 |
Count Rate Max | 250000 pulses/s |
Encoder Interface Resolution | x4 |
Update Rate | 125 samples/s |
Time Resolution | 1 μs |
Encoder Input Low Voltage Max | 1.4 V DC |
Encoder Input High Voltage Min | 1.8 V DC |
Electrical Properties | |
Encoder Pull-up Resistance | 10 kΩ |
Current Consumption Max | 470 mA |
Current Consumption Max (per encoder) | 200 mA |
Current Consumption Min | 30 mA |
USB Voltage Min | 4.8 V DC |
USB Voltage Max | 5.3 V DC |
Physical Properties | |
Recommended Wire Size | 16 - 26 AWG |
Operating Temperature Min | 0 °C |
Operating Temperature Max | 70 °C |
Digital Inputs | |
Number of Digital Inputs | 4 |
Pull-up Resistance | 15 kΩ |
Customs Information | |
Canadian HS Export Code | 8471.80.00 |
American HTS Import Code | 8471.80.40.00 |
Country of Origin | CN (China) |
Device | Object Name | Channel |
---|---|---|
Encoder Inputs | Encoder | 0 - 3 |
Digital Inputs | Encoder | 0 - 3 |
This product has been replaced by a new revision, the 1047_1 - PhidgetEncoder HighSpeed. The new revision has improved power switches for added stability when using high capacitance encoders, and has updated firmware.
If you only need a single encoder, check out the 1057 - PhidgetEncoder HighSpeed.
You can protect your board by purchasing the 3809 - Acrylic Enclosure for the 1047.
API | Detail | Language | OS | |
---|---|---|---|---|
Encoder | Visual Studio GUI | C# | Windows | Download |
Encoder | Objective-C | macOS | Download | |
Encoder | Swift | macOS | Download | |
Encoder | Swift | iOS | Download | |
Encoder | Visual Basic | Windows | Download | |
Encoder | Max | Multiple | Download | |
DigitalInput | Visual Studio GUI | C# | Windows | Download |
DigitalInput | Objective-C | macOS | Download | |
DigitalInput | Swift | macOS | Download | |
DigitalInput | Swift | iOS | Download | |
DigitalInput | Visual Basic | Windows | Download | |
DigitalInput | Max | Multiple | Download |
Date | Board Revision | Device Version | Comment |
---|---|---|---|
June 2010 | 0 | 100 | Product Release |
May 2011 | 0 | 101 | getLabelString fixed for labels of length >7 |
January 2012 | 0 | 102 | Fixed initial power state of channels 3 and 4 |
June 2012 | 1 | 102 | Replaced power switches for added stability |
March 2015 | 1 | 103 | Fixed a timing bug |
Welcome to the 1047 user guide! In order to get started, make sure you have the following hardware on hand:
Next, you will need to connect the pieces:
Now that you have everything together, let's start using the 1047!
In order to demonstrate the functionality of the 1047, 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 icon in the taskbar. If it is not there, open up the start menu and search for Phidget Control Panel
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 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 1047.
After plugging the 1047 into your computer and opening the Phidget Control Panel, you will see something like this:
The Phidget Control Panel will list all connected Phidgets and associated objects, as well as the following information:
The Phidget Control Panel can also be used to test your device. Double-clicking on an object will open an example.
Double-click on the Encoder object, labelled Encoder Input, in order to run the example:
General information about the selected object will be displayed at the top of the window. You can also experiment with the following functionality:
Double-click on a Digital Input object in order to run the example:
General information about the selected object will be displayed at the top of the window. You can also experiment with the following functionality:
For more information about Digital Inputs, take a look at the Digital Input Primer
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.
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.
You are now ready to start writing your own code for the device. The best way to do that is to start from our Code Samples.
Select your programming language of choice from the drop-down list to get an example for your device. You can use the options provided to further customize the example to best suit your needs.
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.
The 1047 can be used with a wide assortment of mechanical and optical encoders. The encoder should be of quadrature output type, indicating that there will be two quadrature output channels (usually labeled A and B) and a third output channel (only on some encoders) to signal when the index pin (a reference point for zero position or a complete revolution) has been reached.
The 1047 is able to read four encoders simultaneously. Encoders are not powered up until all initialization of the device is complete. It is possible to enable some or all encoders, depending on how many of the channels are being used. This can also be used to reduce power consumption when certain encoders are not needed.
The 1047 has the added ability to time the duration between a group of quadrature changes. The time is returned in microseconds. This time value can be used to calculate velocity and acceleration with very high precision.
If the number of quadrature counts per revolution is unknown for a particular encoder, this value can be determined by using the index signal. In addition, it is possible to monitor how many counts have occurred since the last index. The index signal is an output only on certain encoders. Refer to the encoder’s description to check if this third output channel exists or not. If the encoder does not have this signal, it is still possible to use it with the 1046, but an event for the index will never get triggered.
The maximum rate of the 1046 is specified at 250,000 quadrature cycles per second. Since this device counts pulses rather than cycles, you could also say that it counts a maximum of 1,000,000 pulses per second (since there are four pulses in a cycle). In your application, these numbers relate directly to the number of revolutions per second you wish to measure, and the number of counts per revolution specified for your encoder. If your encoder's wheel has 1000 counts per revolution, then the limit on measurable revolutions per second is 250, or 15,000 rpm (which, for the 1047, corresponds to 1000 position changes in software per second).
One of the most common problems encountered with connecting encoders to a 1047 is a strange jitter characterized by the encoder position appearing to switch back and forth between 0 and 1 or -1 and nothing else. This is usually indicative of a bad connection on either the A or B channel. You should check that the wiring is sound and try again.
The 1046 incorporates a 10 kOhm pull-up resistor on each line from the encoder input connector. If your encoder is mechanical, these pull-up resistors eliminate the requirement to add your own external pull-up resistors.
Some optical encoders will have a simple photo-transistor/open-collector output. The 10 kOhm pull-up resistor may have to be augmented with a stronger parallel resistor if your optical encoder datasheet calls for it. Some open-collector outputs will not be strong enough to pull this resistor to ground. These encoders are not compatible with the 1047, and may only work initially, or not at all. If you have any doubts, please contact us.
Most optical encoders have a push-pull output, and the pull-up resistor is irrelevant, but weak enough not cause problems.
We have reviewed the following encoders, and found that they can be used with the PhidgetEncoder Highspeed 4-Input. This is not meant to be a comprehensive list but should be used as examples of the type of encoders that can be used with the 1047.
Manufacturer | Web Page | Part Number |
Grayhill | www.Grayhill.com | Series 63R, Series 61R Series 63Q TTL Output |
US Digital (Recommended) | www.USDigital.com | S4, S5, E2, E3, E4, E4P, etc. |
Avago Technologies (Formerly Agilent) | www.avagotech.com | HEDS 5500 |
CUI Inc. | www.cui.com | AMT103-V |
Each Input uses a 5-pin, 0.100 inch pitch locking connector. The connectors are commonly available - refer to the Table below for manufacturer part numbers.
Manufacturer | Part Number | Description |
Molex | 50-57-9405 | 5 Position Cable Connector |
Molex | 16-02-0102 | Wire Crimp Insert for Cable Connector |
Molex | 70543-0004 | 5 Position Vertical PCB Connector |
Molex | 70553-0004 | 5 Position Right-Angle PCB Connector (Gold) |
Molex | 70553-0039 | 5 Position Right-Angle PCB Connector (Tin) |
Molex | 15-91-2055 | 5 Position Right-Angle PCB Connector - Surface Mount |
Note: Most of the above components can be bought at Digikey.
If you want to know more about encoders, check out the Encoder Guide. If you'd like to know more about the digital inputs on the 1047, visit the Digital Input Guide.
Channel Name | API | Channel |
---|---|---|
Encoder Input | Encoder | 0 - 3 |
Digital Input | DigitalInput | 0 - 3 |