ENC1000 User Guide: Difference between revisions
No edit summary |
|||
Line 32: | Line 32: | ||
The maximum rate of the ENC1000 is specified at 100,000 quadrature cycles per second. In your application, this number relates 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 cycles per revolution, then the limit on measurable revolutions per second is 100, or 6,000rpm. | The maximum rate of the ENC1000 is specified at 100,000 quadrature cycles per second. In your application, this number relates 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 cycles per revolution, then the limit on measurable revolutions per second is 100, or 6,000rpm. | ||
===Interfacing Encoders=== | |||
The ENC1000 can connect to any of the [{{SERVER}}/?tier=1&catid=4&pcid=2 encoders] we sell without any modification just by setting the {{Code|EncoderIOMode}} property to '''Push-Pull''' . If you're trying to use your own encoder, you may need to change the IO mode to '''Open Collector''' or '''Line Driver''' mode. Have a look at the [[Encoder_Primer#Output_Circuit]] for more details on what to use. When in doubt, you can just try all of the different modes until you find one that works. | |||
===Connector=== | ===Connector=== | ||
Line 69: | Line 73: | ||
Note: Most of the above components can be bought at [http://www.digikey.com Digikey]. | Note: Most of the above components can be bought at [http://www.digikey.com Digikey]. | ||
=== Calculating Velocity === | === Calculating Velocity === |
Revision as of 21:15, 13 June 2017
Required Hardware
- An ENC1000 Encoder Phidget
- A VINT Hub
- A 3-wire Phidget cable
- A USB cable
- A computer
- A quadrature encoder and cable
Connecting the Pieces
- Connect the ENC1000 to the VINT Hub using the Phidget cable.
- Connect the encoder to the Phidget using an encoder cable.
- Connect the VINT Hub to your computer using a USB cable.
Testing Using Windows
Phidget Control Panel
In order to demonstrate the functionality of the ENC1000, 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.
Windows
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
macOS
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 ENC1000.
First Look
After plugging the ENC1000 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:
- 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.
Encoder
When you double click on an Encoder object, a window like the one pictured will open.
- At the top of the window, information about your device and the properties of this particular channel will be listed.
- On the left, change trigger and/or data interval can be changed. For more information on these settings, see the Data Rate/Change Trigger page. You can enable the input (if applicable) and specify the counts per revolution (CPR) to enable velocity calculation. Press enter after typing a number to enable velocity. You can also change the IO mode of the encoder to enable pull-up or pull-down resistors on the encoder input if necessary.
- On the right, real-time data is displayed:
- 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 (if supported by this encoder) was last encountered.
- Velocity: If a CPR has been specified, the average velocity in rotations per minute.
Testing Using Mac OS X
- Go to the Quick Downloads section on the Mac OS X page.
- Download and run the Phidget OS X Installer
- Click on System Preferences >> Phidgets (under Other) to activate the Preference Pane
- Make sure your device is properly attached
- Double click on your device's objects in the listing to open them. The Preference Pane and examples will function very similarly to the ones described above in the Windows section.
Testing Using Linux
For a general step-by-step guide on getting Phidgets running on Linux, see the Linux page.
Using a Remote OS
We recommend testing your Phidget on a desktop OS before moving on to remote OS. Once you've tested your Phidget, you can go to the PhidgetSBC, or iOS pages to learn how to proceed.
Technical Details
The ENC1000 can be used with a wide assortment of mechanical and optical encoders. The encoder should be of incremental quadrature output type, indicating that there will be two output channels (usually labeled A and B).
The maximum rate of the ENC1000 is specified at 100,000 quadrature cycles per second. In your application, this number relates 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 cycles per revolution, then the limit on measurable revolutions per second is 100, or 6,000rpm.
Interfacing Encoders
The ENC1000 can connect to any of the encoders we sell without any modification just by setting the EncoderIOMode
property to Push-Pull . If you're trying to use your own encoder, you may need to change the IO mode to Open Collector or Line Driver mode. Have a look at the Encoder_Primer#Output_Circuit for more details on what to use. When in doubt, you can just try all of the different modes until you find one that works.
Connector
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.
Calculating Velocity
When your program captures an encoder change event, it'll receive two variables: positionChange (measured in 'ticks', four of which equal one quadrature count for the ENC1000) and timeChange (measured in nanoseconds). You can use these values to easily compute the instantaneous velocity of the encoder. For example, our C# example code 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're 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);
}
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.