Difference between revisions of "Component: Quadrature Encoder (General Input)"
| (12 intermediate revisions by 2 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.5, 26-11-24, BR, Updated tooltip for CheckForChanges macro | ||
==Detailed description== | ==Detailed description== | ||
| Line 26: | Line 27: | ||
==Examples== | ==Examples== | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
===Polling=== | ===Polling=== | ||
| Line 53: | Line 41: | ||
{{Fcfile|Quad_Encoder_IOC.fcfx|Quad_Encoder_IOC}} | {{Fcfile|Quad_Encoder_IOC.fcfx|Quad_Encoder_IOC}} | ||
| − | |||
| + | ==Macro reference== | ||
| + | |||
| + | ===CheckForChanges=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| Line 60: | Line 50: | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CheckForChanges''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''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 68: | Line 58: | ||
| + | ===Disable=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| Line 81: | Line 72: | ||
| + | ===Enable=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Enable''' |
|- | |- | ||
| − | | colspan="2" | | + | | colspan="2" | Enables the use of the quad encoder If this is not called, the read functions will return zeros |
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | |||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 99: | Line 86: | ||
| + | ===ReadCounter=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadCounter''' |
|- | |- | ||
| − | | colspan="2" | | + | | colspan="2" | Reads the current dial counter This is a counter from -32768 to 32767 |
|- | |- | ||
|- | |- | ||
| − | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | + | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-s16-icon.png]] - INT |
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
| + | ===ReadCounter32=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadCounter32''' |
|- | |- | ||
| − | | colspan="2" | | + | | colspan="2" | Reads the current dial counter as a 32-bit value This is a counter from -2147483648 to 2147483647 |
|- | |- | ||
|- | |- | ||
| − | + | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-s32-icon.png]] - LONG | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
| + | ===ResetCounter=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ResetCounter''' |
|- | |- | ||
| − | | colspan="2" | | + | | colspan="2" | Resets the current dial counter to zero |
|- | |- | ||
|- | |- | ||
| − | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | + | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID |
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
| + | ===Rotate=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Rotate''' |
|- | |- | ||
| − | | colspan="2" | | + | | colspan="2" | Simulation Rotate function to allow accurate rotation during simulation. Automatically called by any attached coupling or gearbox component. |
|- | |- | ||
|- | |- | ||
| − | | width="10%" align="center" | [[File:Fc9- | + | | width="10%" align="center" | [[File:Fc9-f32-icon.png]] - FLOAT |
| − | | width="90%" | | + | | width="90%" | Angle |
|- | |- | ||
| − | | colspan="2" | | + | | colspan="2" | Amount to rotate the shaft input in degrees |
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 161: | Line 147: | ||
| + | ===WriteCounter=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WriteCounter''' |
| + | |- | ||
| + | | colspan="2" | Sets the value of the internal count variable. Range: -32768 to 32767 | ||
| + | |- | ||
|- | |- | ||
| − | | | + | | width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT |
| + | | width="90%" | Value | ||
|- | |- | ||
| + | | colspan="2" | Range: -32768 to 32767 | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 174: | Line 166: | ||
| + | ===WriteCounter32=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WriteCounter32''' |
| + | |- | ||
| + | | colspan="2" | Sets the value of the internal count variable. Range: -2147483648 to 2147483647 | ||
| + | |- | ||
|- | |- | ||
| − | | | + | | width="10%" align="center" | [[File:Fc9-s32-icon.png]] - LONG |
| + | | width="90%" | Value | ||
|- | |- | ||
| + | | colspan="2" | Range: -2147483648 to 2147483647 | ||
|- | |- | ||
| − | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | + | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID |
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
| − | |||
| − | |||
| Line 258: | Line 254: | ||
| 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.fcfx FC_Comp_Source_Encoder_Quadrature.fcfx] | ||
| + | |||
| + | Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Encoder_Quadrature.fcfx FC_Comp_Source_Encoder_Quadrature.fcfx] | ||
Latest revision as of 11:42, 26 November 2024
| Author | Matrix TSL |
| Version | 1.5 |
| Category | General Input |
Contents
Quadrature Encoder 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.5, 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.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_Encoder_Quadrature.fcfx
