Quantity Available: 611
Qty | Price |
---|---|
5 | $14.25 |
10 | $13.50 |
25 | $12.00 |
50 | $10.50 |
100 | $9.75 |
250 | $9.00 |
500 | $8.25 |
1000 | $7.50 |
The Quadrature Encoder Phidget interfaces with any 5V quadrature encoder. A quadrature encoder is the most commonly used feedback device for a DC or stepper motor. With an encoder, you can keep track of how far your motor has turned, which then allows you to control the position and velocity in your code. This Phidget connects to your computer through a VINT Hub.
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 | ||
---|---|---|---|
Part Number | Price | Number of VINT Ports | Controlled By |
![]() VINT Hub Phidget
|
$30.00 | 6 | USB (Mini-USB) |
![]() Wireless VINT Hub
|
$60.00 | 6 | Local Network (Ethernet or Wi-Fi) |
![]() PhidgetSBC4
|
$120.00 | 6 | — |
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 | |
---|---|---|
Part Number | Price | Cable Length |
![]() Phidget Cable 60cm
|
$2.00 | 600 mm |
![]() Phidget Cable 10cm
|
$1.50 | 100 mm |
![]() Phidget Cable 350cm
|
$3.00 | 3.5 m |
![]() Phidget Cable 120cm
|
$2.25 | 1.2 m |
![]() Phidget Cable 180cm
|
$2.75 | 1.8 m |
![]() Phidget Cable 30cm
|
$1.75 | 300 mm |
![]() Phidget Cable 90cm
|
$2.00 | 900 mm |
![]() Phidget Cable 150cm
|
$2.50 | 1.5 m |
For an easy way to connect an encoder to the 5-pin connector on the ENC1000, you can use these handy cables.
Product | Physical Properties | ||
---|---|---|---|
Part Number | Price | Cable Length | Cable Gauge |
![]() HighSpeed Encoder Cable 50cm
|
$5.00 | 500 mm | 26 AWG |
The ENC1000 can be used with any incremental quadrature encoder. For more details on the different kinds of encoders, have a look at the Encoder Primer. All of the rotary encoders listed below are compatible with this Phidget:
Product | Encoder Properties | |||
---|---|---|---|---|
Part Number | Price | Output Circuit Type | Encoder Resolution | Encoder Speed Max |
![]() Optical Rotary Encoder 4mm Shaft
|
$50.00 | Push-Pull (Single-Ended) | 360 CPR | 3000 RPM |
![]() Optical Rotary Encoder HKT22
|
$25.00 | Push-Pull (Single-Ended) | 300 CPR | 6000 RPM |
![]() Hollow Shaft Optical Encoder IHC3808
|
$50.00 | Push-Pull (Single-Ended) | 500 CPR | 4500 RPM |
![]() 40 CPR Quadrature Encoder
|
$10.00 | Push-Pull | 40 CPR | 6000 RPM |
These linear encoders can all be used with the ENC1000:
Product | Physical Properties | |
---|---|---|
Part Number | Price | Travel |
![]() Linear Encoder 900mm
|
$110.00 | 900 mm |
![]() Linear Encoder 1100mm
|
$120.00 | 1.1 m |
![]() Linear Encoder 1400mm
|
$340.00 | 1.4 m |
![]() Linear Encoder 1700mm
|
$360.00 | 1.7 m |
![]() Linear Encoder 2000mm
|
$380.00 | 2 m |
Here are all of the draw-wire encoders that can be used with the ENC1000:
Product | Encoder Properties | Physical Properties | |||
---|---|---|---|---|---|
Part Number | Price | Output Circuit Type | Length Resolution | Wire Pull Length | Weight |
![]() Draw Wire Encoder (1m)
|
$90.00 | Push-Pull | — | 1 m | 305 g |
![]() Draw Wire Encoder (0.6m)
|
$80.00 | Push-Pull | — | 600 mm | 255 g |
![]() Draw Wire Encoder (1.5m)
|
$100.00 | Push-Pull | — | 1.5 m | 485 g |
![]() Draw Wire Encoder (2.5m)
|
$120.00 | Push-Pull | — | 2.5 m | 580 g |
Interface with any 5V quadrature encoder with the Quadrature Encoder Phidget. With an encoder, you can keep track of how far your motor has turned, which then allows you to control the position and velocity in your code.
You can use your Control Panel to explore your Phidget's channels.
1. Open your Control Panel, and you will find the following channel:
2. Double click on the channel to open the example program. This channel belongs to the Encoder channel class:
In your Control Panel, double click on "Quadrature Encoder Phidget":
1. Setting up your Programming Environment
Before you open a Phidget channel in your program, you can set these properties to specify which channel to open. You can find this information through the Control Panel.
1. Open the Control Panel and double-click on the red map pin icon:
2. The Addressing Information window will open. Here you will find all the information you need to address your Phidget in your program.
See the Phidget22 API for your language to determine exact syntax for each property.
Note: Graphing and logging is currently only supported in the Windows version of the Phidget Control Panel.
In the Phidget Control Panel, open the channel for your device and click on the icon next to the data type that you want to plot. This will open up a new window:
If you need more complex functionality such as logging multiple sensors to the same sheet or performing calculations on the data, you'll need to write your own program. Generally this will involve addressing the correct channel, opening it, and then creating an Event Handler and adding graphing/logging code to it.
The quickest way to get started is to download some sample code for your desired programming language and then search google for logging or plotting in that language (e.g. "how to log to csv in python") and add the code to the existing change handler.
You can perform filtering on the raw data in order to reduce noise in your graph. For more information, see the Control Panel Graphing page.
You can perform a transform on the incoming data to get different graph types that may provide insights into your sensor data. For more information on how to use these graph types, see the Control Panel Graphing page.
The Change Trigger is the minimum change in the sensor data needed to trigger a new data event. The Data Interval is the time (in ms) between data events sent out from your Phidget. You can modify one or both of these values to achieve different data outputs. You can learn more about these two properties here.
Firmware Upgrade
MacOS users can upgrade device firmware by double-clicking the device row in the Phidget Control Panel.
Linux users can upgrade via the phidget22admin tool (see included readme for instructions).
Windows users can upgrade the firmware for this device using the Phidget Control Panel as shown below.
Firmware Downgrade
Firmware upgrades include important bug fixes and performance improvements, but there are some situations where you may want to revert to an old version of the firmware (for instance, when an application you're using is compiled using an older version of phidget22 that doesn't recognize the new firmware).
MacOS and Linux users can downgrade using the phidget22admin tool in the terminal (see included readme for instructions).
Windows users can downgrade directly from the Phidget Control Panel if they have driver version 1.9.20220112 or newer:
Firmware Version Numbering Schema
Phidgets device firmware is represented by a 3-digit number. For firmware patch notes, see the device history section on the Specifications tab on your device's product page.
The ENC1000 can connect to any of the encoders we sell without any modification just by setting the IOMode
property to Push-Pull . If you are trying to use your own encoder, you may need to change the IO mode to Open Collector or Line Driver mode. See the Encoder Primer for more details on what to use.
The encoder input on the ENC1000 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.
When your program captures an encoder change event, it will receive two variables: positionChange
(measured in 'ticks', four of which equal one quadrature count for the ENC1000) and timeChange
(measured in milliseconds). You can use these values to easily compute the instantaneous velocity of the encoder. For example, our C# encoder example implements this method of velocity calculation:
void enc_change(object sender, Phidget22.Events.EncoderEncoderChangeEventArgs e) {
...
// Convert time change from milliseconds to minutes
double timeChangeMinutes = e.TimeChange / 60000.0;
// Calculate RPM based on the positionChange, timeChange, and encoder CPR (specified by the user)
double rpm = (((double)e.PositionChange / CPR) / timeChangeMinutes);
...
}
This implementation may be useful if you are graphing the RPM on a line graph, but if it's being used to display the current RPM as a single number, it won't be very helpful because when the motor changes speed or direction frequently, it'll be hard to read the velocity as a meaningful value. This method can also be prone to variations in velocity if the encoder's CPR is low and the sampling rate is high. To solve these problems, you should decide on a time interval during which you'll gather data, and take a moving velocity calculation based on that data. You can use the Queue data type to make this easy:
Queue<double> positionChangeQueue = new Queue<double>();
Queue<double> timeChangeQueue = new Queue<double>();
void enc_change(object sender, Phidget22.Events.EncoderEncoderChangeEventArgs e) {
double totalPosition = 0;
double totalTime = 0;
int n = 500; // sampling window size, duration is 500*t where t is the data interval of the ENC1000
// add the newest sample to the queue
positionChangeQueue.Enqueue(e.PositionChange);
timeChangeQueue.Enqueue(e.TimeChange);
// If we've exceeded our desired window size, remove the oldest element from the queue
if ( positionChangeQueue.Count >= n ) {
positionChangeQueue.Dequeue();
timeChangeQueue.Dequeue();
}
// Calculate totals for position and time
foreach( double positionChange in positionChangeQueue ) {
totalPosition += positionChange;
}
foreach( double timeChange in timeChangeQueue ) {
totalTime += timeChange;
}
// Convert time change from milliseconds to minutes
double timeChangeMinutes = e.TimeChange / 60000.0;
// Calculate RPM based on the positionChange, timeChange, and encoder CPR (specified by the user)
double rpm = (((double)e.PositionChange / CPR) / timeChangeMinutes);
}
Board Properties | |
---|---|
Controlled By | VINT |
Encoder Interface | |
Number of Encoder Inputs | 1 |
Count Rate Max | 400000 pulses/s |
Encoder Interface Resolution | x4 |
Time Resolution | 1 μs |
Encoder Input Low Voltage Max | 2.4 V DC |
Encoder Input High Voltage Min | 2.6 V DC |
Sampling Interval Min | 20 ms/sample |
Sampling Interval Max | 1 s/sample |
Pull-up Resistance (Open Collector) | 2.2 kΩ or 10 kΩ |
Pull-down Resistance (Line Driver) | 2.2 kΩ or 10 kΩ |
Electrical Properties | |
Current Consumption Min | (unconfigured) 24.6 μA |
Current Consumption Max | encoder current + 4.2 mA |
Physical Properties | |
Operating Temperature Min | -40 °C |
Operating Temperature Max | 85 °C |
Customs Information | |
Canadian HS Export Code | 8471.80.00 |
American HTS Import Code | 8471.80.40.00 |
Country of Origin | CN (China) |
Date | Board Revision | Device Version | Comment |
---|---|---|---|
June 2017 | 0 | 101 | Product Release |
Channel Name | API | Channel |
---|---|---|
Encoder Input | Encoder | 0 |
Product | Encoder Interface | ||
---|---|---|---|
Part Number | Price | Number of Encoder Inputs | Count Rate Max |
![]() PhidgetEncoder HighSpeed 4-Input
|
$75.00 | 4 | 1E+06 pulses/s |
![]() PhidgetEncoder HighSpeed 4-Input
|
$75.00 | 4 | 1E+06 pulses/s |
![]() PhidgetEncoder HighSpeed
|
$50.00 | 1 | 2E+06 pulses/s |
![]() PhidgetEncoder HighSpeed
|
$50.00 | 1 | 1E+06 pulses/s |
![]() Quadrature Encoder Phidget
|
$15.00 | 1 | 400000 pulses/s |