<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.phidgets.com/docs/index.php?action=history&amp;feed=atom&amp;title=ENC1001_User_Guide</id>
	<title>ENC1001 User Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.phidgets.com/docs/index.php?action=history&amp;feed=atom&amp;title=ENC1001_User_Guide"/>
	<link rel="alternate" type="text/html" href="https://www.phidgets.com/docs/index.php?title=ENC1001_User_Guide&amp;action=history"/>
	<updated>2026-04-24T13:38:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.phidgets.com/docs/index.php?title=ENC1001_User_Guide&amp;diff=34341&amp;oldid=prev</id>
		<title>Mparadis at 23:08, 23 January 2024</title>
		<link rel="alternate" type="text/html" href="https://www.phidgets.com/docs/index.php?title=ENC1001_User_Guide&amp;diff=34341&amp;oldid=prev"/>
		<updated>2024-01-23T23:08:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:08, 23 January 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l40&quot;&gt;Line 40:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{UGC-DataInterval}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{UGC-DataInterval}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{UGC-Firmware}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{UGC-Firmware}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{UGC-Shield}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{UGC-VINTSpeed}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{UGC-Entry|Connector||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{UGC-Entry|Connector||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The encoder input on the ENC1001 uses a 5-pin, 0.100 inch pitch locking connector. The connectors are commonly available - refer to the Table below for manufacturer part numbers.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The encoder input on the ENC1001 uses a 5-pin, 0.100 inch pitch locking connector. The connectors are commonly available - refer to the Table below for manufacturer part numbers.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mparadis</name></author>
	</entry>
	<entry>
		<id>https://www.phidgets.com/docs/index.php?title=ENC1001_User_Guide&amp;diff=34336&amp;oldid=prev</id>
		<title>Mparadis: Created page with &quot;__NOINDEX__ __NOTOC__ &lt;metadesc&gt;The Encoder Phidget reads a quadrature encoder at speeds of up to 100,000 quadrature cycles per second and connects to a port on your VINT Hub.&lt;/metadesc&gt; Category:UserGuide ==Part 1: Setup== {{PT1 Deck Sequence}}  == Part 2: Using Your Phidget ==  ===About=== 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 cont...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.phidgets.com/docs/index.php?title=ENC1001_User_Guide&amp;diff=34336&amp;oldid=prev"/>
		<updated>2024-01-19T23:06:53Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOINDEX__ __NOTOC__ &amp;lt;metadesc&amp;gt;The Encoder Phidget reads a quadrature encoder at speeds of up to 100,000 quadrature cycles per second and connects to a port on your VINT Hub.&amp;lt;/metadesc&amp;gt; &lt;a href=&quot;/docs/Category:UserGuide&quot; class=&quot;mw-redirect&quot; title=&quot;Category:UserGuide&quot;&gt;Category:UserGuide&lt;/a&gt; ==Part 1: Setup== {{PT1 Deck Sequence}}  == Part 2: Using Your Phidget ==  ===About=== 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 cont...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOINDEX__&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;metadesc&amp;gt;The Encoder Phidget reads a quadrature encoder at speeds of up to 100,000 quadrature cycles per second and connects to a port on your VINT Hub.&amp;lt;/metadesc&amp;gt;&lt;br /&gt;
[[Category:UserGuide]]&lt;br /&gt;
==Part 1: Setup==&lt;br /&gt;
{{PT1 Deck Sequence}}&lt;br /&gt;
&lt;br /&gt;
== Part 2: Using Your Phidget ==&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Image:ENC1001_About.jpg|link=|700px]]&lt;br /&gt;
&lt;br /&gt;
===Explore Your Phidget Channels Using The Control Panel===&lt;br /&gt;
&lt;br /&gt;
You can use your Control Panel to explore your Phidget&amp;#039;s channels.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.&amp;#039;&amp;#039;&amp;#039; Open your Control Panel, and you will find the following channel:&lt;br /&gt;
&lt;br /&gt;
[[Image:ENC1001_Panel.jpg|link=|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2.&amp;#039;&amp;#039;&amp;#039; Double click on the channel to open the example program. This channel belongs to the &amp;#039;&amp;#039;&amp;#039;Encoder&amp;#039;&amp;#039;&amp;#039; channel class:&lt;br /&gt;
&lt;br /&gt;
{{UGC-Start}}&lt;br /&gt;
&lt;br /&gt;
{{UGC-Entry|Quadrature Encoder Phidget:| Reads the signal of a quadrature encoder|&lt;br /&gt;
In your Control Panel, double click on &amp;quot;Quadrature Encoder Phidget&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:ENC1001-Encoder.jpg|center|link=]]}}&lt;br /&gt;
&lt;br /&gt;
{{UGC-End}}&lt;br /&gt;
&lt;br /&gt;
{{UG-Part3}}&lt;br /&gt;
&lt;br /&gt;
== Part 4: Advanced Topics and Troubleshooting ==&lt;br /&gt;
{{UGC-Start}}&lt;br /&gt;
{{UGC-Addressing}}&lt;br /&gt;
{{UGC-Graphing}}&lt;br /&gt;
{{UGC-DataInterval}}&lt;br /&gt;
{{UGC-Firmware}}&lt;br /&gt;
{{UGC-Entry|Connector||&lt;br /&gt;
The encoder input on the ENC1001 uses a 5-pin, 0.100 inch pitch locking connector. The connectors are commonly available - refer to the Table below for manufacturer part numbers.&lt;br /&gt;
&lt;br /&gt;
{{{!}}class {{=}} &amp;quot;wikitable&amp;quot; style{{=}}&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
{{!}} style{{=}}&amp;quot;background:#f0f0f0;&amp;quot;{{!}}&amp;#039;&amp;#039;&amp;#039;Manufacturer &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{{!}} style{{=}}&amp;quot;background:#f0f0f0;&amp;quot;{{!}}&amp;#039;&amp;#039;&amp;#039;Part Number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{{!}} style{{=}}&amp;quot;background:#f0f0f0;&amp;quot;{{!}}&amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}Molex&lt;br /&gt;
{{!}}50-57-9405&lt;br /&gt;
{{!}}5 Position Cable Connector&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}Molex&lt;br /&gt;
{{!}}16-02-0102&lt;br /&gt;
{{!}}Wire Crimp Insert for Cable Connector&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}Molex&lt;br /&gt;
{{!}}70543-0004&lt;br /&gt;
{{!}}5 Position Vertical PCB Connector&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}Molex&lt;br /&gt;
{{!}}70553-0004&lt;br /&gt;
{{!}}5 Position Right-Angle PCB Connector (Gold)&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}Molex&lt;br /&gt;
{{!}}70553-0039&lt;br /&gt;
{{!}}5 Position Right-Angle PCB Connector (Tin)&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}Molex&lt;br /&gt;
{{!}}15-91-2055&lt;br /&gt;
{{!}}5 Position Right-Angle PCB Connector - Surface Mount&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}}}&lt;br /&gt;
&lt;br /&gt;
Note: Most of the above components can be bought at [http://www.digikey.com/ Digikey].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{UGC-Entry|Calculating Velocity||&lt;br /&gt;
When your program captures an encoder change event, it will receive two variables: {{Code|positionChange}} (measured in &amp;#039;ticks&amp;#039;, four of which equal one quadrature count for the ENC1001) and {{Code|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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=csharp&amp;gt;&lt;br /&gt;
void enc_change(object sender, Phidget22.Events.EncoderEncoderChangeEventArgs e) {&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
// Convert time change from milliseconds to minutes&lt;br /&gt;
double timeChangeMinutes = e.TimeChange / 60000.0;&lt;br /&gt;
// Calculate RPM based on the positionChange, timeChange, and encoder CPR (specified by the user)&lt;br /&gt;
double rpm = (((double)e.PositionChange / CPR) / timeChangeMinutes);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This implementation may be useful if you are graphing the RPM on a line graph, but if it&amp;#039;s being used to display the current RPM as a single number, it won&amp;#039;t be very helpful because when the motor changes speed or direction frequently, it&amp;#039;ll be hard to read the velocity as a meaningful value. This method can also be prone to variations in velocity if the encoder&amp;#039;s CPR is low and the sampling rate is high. To solve these problems, you should decide on a time interval during which you&amp;#039;ll gather data, and take a moving velocity calculation based on that data. You can use the Queue data type to make this easy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=csharp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Queue&amp;lt;double&amp;gt; positionChangeQueue = new Queue&amp;lt;double&amp;gt;();&lt;br /&gt;
Queue&amp;lt;double&amp;gt; timeChangeQueue = new Queue&amp;lt;double&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
void enc_change(object sender, Phidget22.Events.EncoderEncoderChangeEventArgs e) {&lt;br /&gt;
&lt;br /&gt;
double totalPosition = 0;&lt;br /&gt;
double totalTime = 0;&lt;br /&gt;
int n = 500; // sampling window size, duration is 500*t where t is the data interval of the ENC1001&lt;br /&gt;
&lt;br /&gt;
// add the newest sample to the queue&lt;br /&gt;
positionChangeQueue.Enqueue(e.PositionChange);&lt;br /&gt;
timeChangeQueue.Enqueue(e.TimeChange);&lt;br /&gt;
&lt;br /&gt;
// If we&amp;#039;ve exceeded our desired window size, remove the oldest element from the queue&lt;br /&gt;
if ( positionChangeQueue.Count &amp;gt;= n ) {&lt;br /&gt;
     positionChangeQueue.Dequeue();&lt;br /&gt;
     timeChangeQueue.Dequeue();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Calculate totals for position and time&lt;br /&gt;
foreach( double positionChange in positionChangeQueue ) {&lt;br /&gt;
&lt;br /&gt;
     totalPosition += positionChange;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach( double timeChange in timeChangeQueue ) {&lt;br /&gt;
&lt;br /&gt;
     totalTime += timeChange;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Convert time change from milliseconds to minutes&lt;br /&gt;
double timeChangeMinutes = e.TimeChange / 60000.0;&lt;br /&gt;
// Calculate RPM based on the positionChange, timeChange, and encoder CPR (specified by the user)&lt;br /&gt;
double rpm = (((double)e.PositionChange / CPR) / timeChangeMinutes);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{UGC-End}}&lt;/div&gt;</summary>
		<author><name>Mparadis</name></author>
	</entry>
</feed>