Component: Quadrature Encoder 2D (General Input): Difference between revisions
No edit summary |
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder"" |
||
| (9 intermediate revisions by 3 users not shown) | |||
| Line 15: | Line 15: | ||
Quadrature Encoder component implements a rotary encoder connected to two pins. Quadrature Encoders provides incremental positioning rather than absolute positioning. | Quadrature Encoder component implements a rotary encoder connected to two pins. Quadrature Encoders provides incremental positioning rather than absolute positioning. | ||
== | ==Version information== | ||
Library Version, Component Version, Date, Author, Info | |||
6, 1.4, 26-11-24, BR, Updated tooltip for CheckForChanges macro | |||
==Detailed description== | ==Detailed description== | ||
Mechanical encoders can be a bit electrically noisy when switching and so to have reliable operation it is recommended to have a simple filter as shown here. | |||
[[Image:EncoderCircuit.jpg]] | |||
==Examples== | ==Examples== | ||
===Polling=== | |||
Example program showing how to use a quadrature encoder component using a polling method. | |||
{{Fcfile|Quad_Encoder_Test_2d.fcfx|Quad_Encoder_Test}} | |||
===Timer Interrupt Based Polling=== | |||
Example program showing how to use a quadrature encoder component using a polling method via a timer interrupt. | |||
{{Fcfile|Quad_Encoder_Timer_2d.fcfx|Quad_Encoder_Timer}} | |||
===Interrupt On Change=== | |||
Example program showing how to use a quadrature encoder component using a interrupt on pin state change interrupt (IOC). | |||
{{Fcfile|Quad_Encoder_IOC_2d.fcfx|Quad_Encoder_IOC}} | |||
| Line 62: | Line 51: | ||
===CheckForChanges=== | ===CheckForChanges=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''CheckForChanges''' | ||
|- | |- | ||
| colspan="2" | Polling function to check changes Returns 1 for chaged, 0 for no change, 255 for error | | colspan="2" | Polling function to check changes and update internal counter. Returns 1 for chaged, 0 for no change, 255 for error | ||
|- | |- | ||
|- | |- | ||
| Line 76: | Line 65: | ||
===Disable=== | ===Disable=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Disable''' | ||
|- | |- | ||
| colspan="2" | Disables the use of the quad encoder Once this ist called, the read functions will return zeros until the next Enable() call | | colspan="2" | Disables the use of the quad encoder Once this ist called, the read functions will return zeros until the next Enable() call | ||
| Line 90: | Line 79: | ||
===Enable=== | ===Enable=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Enable''' | ||
|- | |- | ||
| colspan="2" | Enables the use of the quad encoder If this is not called, the read functions will return zeros | | colspan="2" | Enables the use of the quad encoder If this is not called, the read functions will return zeros | ||
| Line 104: | Line 93: | ||
===ReadCounter=== | ===ReadCounter=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadCounter''' | ||
|- | |- | ||
| colspan="2" | Reads the current dial counter This is a counter from -32768 to 32767 | | colspan="2" | Reads the current dial counter This is a counter from -32768 to 32767 | ||
| Line 118: | Line 107: | ||
===ReadCounter32=== | ===ReadCounter32=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadCounter32''' | ||
|- | |- | ||
| colspan="2" | Reads the current dial counter as a 32-bit value This is a counter from -2147483648 to 2147483647 | | colspan="2" | Reads the current dial counter as a 32-bit value This is a counter from -2147483648 to 2147483647 | ||
| Line 132: | Line 121: | ||
===ResetCounter=== | ===ResetCounter=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ResetCounter''' | ||
|- | |- | ||
| colspan="2" | Resets the current dial counter to zero | | colspan="2" | Resets the current dial counter to zero | ||
| Line 146: | Line 135: | ||
===Rotate=== | ===Rotate=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Rotate''' | ||
|- | |- | ||
| colspan="2" | Simulation Rotate function to allow accurate rotation during simulation. Automatically called by any attached coupling or gearbox component. | | colspan="2" | Simulation Rotate function to allow accurate rotation during simulation. Automatically called by any attached coupling or gearbox component. | ||
| Line 165: | Line 154: | ||
===WriteCounter=== | ===WriteCounter=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''WriteCounter''' | ||
|- | |- | ||
| colspan="2" | Sets the value of the internal count variable. Range: -32768 to 32767 | | colspan="2" | Sets the value of the internal count variable. Range: -32768 to 32767 | ||
| Line 184: | Line 173: | ||
===WriteCounter32=== | ===WriteCounter32=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''WriteCounter32''' | ||
|- | |- | ||
| colspan="2" | Sets the value of the internal count variable. Range: -2147483648 to 2147483647 | | colspan="2" | Sets the value of the internal count variable. Range: -2147483648 to 2147483647 | ||
| Line 204: | Line 193: | ||
==Property reference== | ==Property reference== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Properties''' | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Count Variable | ||
|- | |- | ||
|- | |- | ||
| Line 219: | Line 208: | ||
| colspan="2" | Selects the size of the encoder count variable depending on the number of encoder counts required to be stored. The 16 bit variable counter is accessed via the ReadCounter and WriteCounter functions. The 32 bit variable counter is accessed via the ReadCounter32 and WriteCounter32 functions. | | colspan="2" | Selects the size of the encoder count variable depending on the number of encoder counts required to be stored. The 16 bit variable counter is accessed via the ReadCounter and WriteCounter functions. The 32 bit variable counter is accessed via the ReadCounter32 and WriteCounter32 functions. | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]] | ||
| width="90%" | | width="90%" | Invert Count | ||
|- | |||
| colspan="2" | | |||
|- | |||
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]] | |||
| width="90%" | Limit Value | |||
|- | |||
| colspan="2" | | |||
|- | |||
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | |||
| width="90%" class="mtx-class-propfolder" | Encoder Resolution | |||
|- | |- | ||
|- | |- | ||
| Line 238: | Line 237: | ||
| colspan="2" | The resolution of the encoder in degrees | | colspan="2" | The resolution of the encoder in degrees | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Connections | ||
|- | |- | ||
|- | |- | ||
| Line 252: | Line 251: | ||
| colspan="2" | Input Pin B | | colspan="2" | Input Pin B | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Simulation | ||
|- | |- | ||
|- | |- | ||
| Line 261: | Line 260: | ||
| colspan="2" | Simulated repeat rate when clicking and rotating the encoder | | colspan="2" | Simulated repeat rate when clicking and rotating the encoder | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-type- | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]] | ||
| width="90%" | | | width="90%" | Knob Colour | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-type- | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]] | ||
| width="90%" | | | width="90%" | Pointer Style | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-type- | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]] | ||
| width="90%" | | | width="90%" | Scope Traces | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|} | |} | ||
==Component Source Code== | |||
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_Encoder_Quadrature_2dgi.fcfx FC_Comp_Source_Encoder_Quadrature_2dgi.fcfx] | |||
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Encoder_Quadrature_2dgi.fcfx FC_Comp_Source_Encoder_Quadrature_2dgi.fcfx] | |||
Latest revision as of 14:37, 13 July 2026
| Author | Matrix TSL |
| Version | 1.4 |
| Category | General Input |
Quadrature Encoder 2D component
Quadrature Encoder component implements a rotary encoder connected to two pins. Quadrature Encoders provides incremental positioning rather than absolute positioning.
Version information
Library Version, Component Version, Date, Author, Info 6, 1.4, 26-11-24, BR, Updated tooltip for CheckForChanges macro
Detailed description
Mechanical encoders can be a bit electrically noisy when switching and so to have reliable operation it is recommended to have a simple filter as shown here.
Examples
Polling
Example program showing how to use a quadrature encoder component using a polling method.
Quad_Encoder_Test
Timer Interrupt Based Polling
Example program showing how to use a quadrature encoder component using a polling method via a timer interrupt.
Quad_Encoder_Timer
Interrupt On Change
Example program showing how to use a quadrature encoder component using a interrupt on pin state change interrupt (IOC).
Quad_Encoder_IOC
Macro reference
CheckForChanges
| CheckForChanges | |
| Polling function to check changes and update internal counter. Returns 1 for chaged, 0 for no change, 255 for error | |
| Return | |
Disable
| Disable | |
| Disables the use of the quad encoder Once this ist called, the read functions will return zeros until the next Enable() call | |
| Return | |
Enable
| Enable | |
| Enables the use of the quad encoder If this is not called, the read functions will return zeros | |
| Return | |
ReadCounter
| ReadCounter | |
| Reads the current dial counter This is a counter from -32768 to 32767 | |
| Return | |
ReadCounter32
| ReadCounter32 | |
| Reads the current dial counter as a 32-bit value This is a counter from -2147483648 to 2147483647 | |
| Return | |
ResetCounter
| ResetCounter | |
| Resets the current dial counter to zero | |
| Return | |
Rotate
WriteCounter
| WriteCounter | |
| Sets the value of the internal count variable. Range: -32768 to 32767 | |
| Value | |
| Range: -32768 to 32767 | |
| Return | |
WriteCounter32
| WriteCounter32 | |
| Sets the value of the internal count variable. Range: -2147483648 to 2147483647 | |
| Value | |
| Range: -2147483648 to 2147483647 | |
| Return | |
Property reference
Component Source Code
Please click here to download the component source project: FC_Comp_Source_Encoder_Quadrature_2dgi.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_Encoder_Quadrature_2dgi.fcfx
