Difference between revisions of "Component: Servo Controller Mod (Mechatronics)"
(8 intermediate revisions by the same user not shown) | |||
Line 17: | Line 17: | ||
==Component Source Code== | ==Component Source Code== | ||
− | Please click here | + | Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_Servo_Controller_Mod.fcfx FC_Comp_Source_Servo_Controller_Mod.fcfx] |
+ | |||
+ | Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Servo_Controller_Mod.fcfx FC_Comp_Source_Servo_Controller_Mod.fcfx] | ||
==Detailed description== | ==Detailed description== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Line 38: | Line 50: | ||
==Examples== | ==Examples== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Line 75: | Line 97: | ||
[[File:LinkedServo.jpg]] | [[File:LinkedServo.jpg]] | ||
− | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Macro reference== | ||
+ | |||
+ | ===AutoMoveToPosition=== | ||
{| 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;" | '''AutoMoveToPosition''' |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Automatically moves towards the new position with a fixed rate of 100 steps per second. |
|- | |- | ||
|- | |- | ||
Line 89: | Line 122: | ||
|- | |- | ||
| colspan="2" | The channel to set the position for. First channel is zero. | | colspan="2" | The channel to set the position for. First channel is zero. | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Position | ||
+ | |- | ||
+ | | colspan="2" | Position to move to. | ||
|- | |- | ||
| 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 95: | Line 133: | ||
+ | ===DisableServo=== | ||
{| 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;" | '''DisableServo''' |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Disables a servo channel effectivly disabling the motor. |
|- | |- | ||
|- | |- | ||
Line 107: | Line 146: | ||
|- | |- | ||
| colspan="2" | The channel to set the position for. First channel is zero. | | colspan="2" | The channel to set the position for. First channel is zero. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| 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 118: | Line 152: | ||
+ | ===EnableServo=== | ||
{| 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;" | '''EnableServo''' |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Enables a servo channel effectivly setting the position of the motor to the value in the local position variable. |
|- | |- | ||
|- | |- | ||
Line 131: | Line 166: | ||
| colspan="2" | The channel to set the position for. First channel is zero. | | colspan="2" | The channel to set the position for. First channel is zero. | ||
|- | |- | ||
− | + | | 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- | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
+ | ===Initialise=== | ||
{| 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;" | '''Initialise''' |
− | |||
− | |||
|- | |- | ||
+ | | colspan="2" | Sets up the servo motor interrupts | ||
|- | |- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| 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 164: | Line 185: | ||
+ | ===IsAutoMoving=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 177: | Line 199: | ||
+ | ===MoveToPosition=== | ||
{| 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;" | '''MoveToPosition''' |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Moves a single step towards the new position, the rate of movement is determined by how often the move to macro is called. Returns 1 if the position has been reached. |
|- | |- | ||
|- | |- | ||
Line 193: | Line 216: | ||
| width="90%" | Position | | width="90%" | Position | ||
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Target position to move towards. |
|- | |- | ||
− | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | + | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE |
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
+ | ===SetAutoMoveSpeed=== | ||
{| 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;" | '''SetAutoMoveSpeed''' |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Sets the speed of the auto move to position macro. Default speed is 1. |
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
− | | width="90%" | | + | | width="90%" | Speed |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | 1=Slowest (Default), 2= Double, 3=Triple, 4=Quadruple |
|- | |- | ||
| 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 218: | Line 242: | ||
+ | ===SetPosition=== | ||
{| 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;" | '''SetPosition''' |
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Moves directly to the specified position with no interpolation. |
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
− | | width="90%" | | + | | width="90%" | Channel |
+ | |- | ||
+ | | colspan="2" | The channel to set the position for. First channel is zero. | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Position | ||
|- | |- | ||
− | | colspan="2" | | + | | colspan="2" | Target position to move towards. |
|- | |- | ||
| 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 236: | Line 266: | ||
+ | ===SetTrim=== | ||
{| 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;" | '''SetTrim''' |
+ | |- | ||
+ | | colspan="2" | Allows the level of trim for each servo channel to be adjusted progmatically. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Channel | ||
+ | |- | ||
+ | | colspan="2" | The channel to set the position for. First channel is zero. | ||
|- | |- | ||
− | | | + | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE |
+ | | width="90%" | Trim | ||
|- | |- | ||
+ | | colspan="2" | 0=0us, 1=+25us, 2=+50us, 3=+75us, 4=+100us, 5=-25us, 6=-50us, 7=-75us, 8=-100us | ||
|- | |- | ||
| 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 | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
− | |||
− | |||
Latest revision as of 13:12, 7 February 2023
Author | Matrix Ltd |
Version | 1.5 |
Category | Mechatronics |
Contents
Servo Controller Mod component
Can control up to eight standard PWM driven servo's. 'Servo Object' properties allow you to connect the controller to on-screen simulations using the "Servo Motor" component and its derivatives.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_Servo_Controller_Mod.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_Servo_Controller_Mod.fcfx
Detailed description
No detailed description exists yet for this component
Examples
Importing from v5
The servo component in Flowcode v6 onwards has a new Initialise macro which will need to be added to your program before any other calls to the servo motor component are made.
Controlling a servo with an analogue input
This example reads the value of the analogue potentiometer and uses this to set the position of the servo motor.
Servo Example 1
The Servo controller is linked to the standard servo component but this could be linked to any object on the panel.
Creating a multi-axis actuator using servo motors
This example links two servo motors together using panel primitive objects and groups.
Servo Example 2
The Servo controller can handle up to 8 motors and is used to control both of the standard servo components on the panel.
Macro reference
AutoMoveToPosition
DisableServo
![]() |
DisableServo |
Disables a servo channel effectivly disabling the motor. | |
![]() |
Channel |
The channel to set the position for. First channel is zero. | |
![]() |
Return |
EnableServo
Initialise
![]() |
Initialise |
Sets up the servo motor interrupts | |
![]() |
Return |
IsAutoMoving
![]() |
IsAutoMoving |
Is the AutoMoveToPosition movement complete. Returns 1 if the servo is still moving. Returns 0 if the servo movement is complete. | |
![]() |
Return |
MoveToPosition
SetAutoMoveSpeed
![]() |
SetAutoMoveSpeed |
Sets the speed of the auto move to position macro. Default speed is 1. | |
![]() |
Speed |
1=Slowest (Default), 2= Double, 3=Triple, 4=Quadruple | |
![]() |
Return |
SetPosition
SetTrim