VEX PID Control Functions

Jump to: navigation, search
(mtrPid_kI)
(mtrPid_kD)
Line 80: Line 80:
 
| class="variableType"| <span class="bigKeywordBI">short </span><span class="bigKeywordB">mtrPid_kD[</span><span class="bigCodeStringsNums">motor_name</span><span class="bigKeywordB">]</span>
 
| class="variableType"| <span class="bigKeywordBI">short </span><span class="bigKeywordB">mtrPid_kD[</span><span class="bigCodeStringsNums">motor_name</span><span class="bigKeywordB">]</span>
 
|-
 
|-
| style="font-family:Verdana, Geneva, sans-serif; color:black; background-color:#FFFFFF; text-align:left; font-size:100%;"|([[Data_Types#dataType_short|short]]) Sets the Derivative parameter (D) in PID control for the specified motor port
+
| style="font-family:Verdana, Geneva, sans-serif; color:black; background-color:#FFFFFF; text-align:left; font-size:100%;"|([[Data_Types#dataType_short|short]])Sets the Derivative gain parameter (D) for PID algorithm for the specified motor port. Because this value is an integer, it is divided by 100 before being applied to the PID algorithm. This value is set on a per-motor basis.
 
|-
 
|-
 
|
 
|
 
   {|
 
   {|
 
   |-
 
   |-
   |<syntaxhighlight lang="ROBOTC">mtrPid_kD[port1] = 5; // Sets the PWM period on port 1 to 50%
+
   |<syntaxhighlight lang="ROBOTC">mtrPid_kD[port1] = 75; // Sets the Derivative Gain Parameter in the PID loop to 0.75 (75/100)
 
</syntaxhighlight>
 
</syntaxhighlight>
 
   |-
 
   |-

Revision as of 07:15, 6 December 2012

Contents

Color Key
Function:
Variable:

Variables

motorPWMLevel

short motorPWMLevel[motor_name]
(short) A variable that reports the current PWM value being sent to the motor from the PID Algorithm. This value allows the user to see if the PID algorithm is sending a slower or faster speed to the motor due to external forces. This variable is read only and on a per-motor basis.
int currentPWMSpeed = 0;
currentPWMSpeed = motorPWMLevel[port1]; // Reads the current PWM level on Motor Port #1.


mtrPid_Period

short mtrPid_Period[motor_name]
(short) This variable will set the time period that the PID algorithm loop will process new data from the encoders. The assigned value is in milliseconds. We do not recommend setting this value below 10ms or above 200ms to maintain PID efficiency. The default value is 50ms. This value can be assigned on a per-motor basis.
mtrPid_Period[port1] = 50; // Set the PID refresh rate to 50ms for Motor Port #1


mtrPid_kP

short mtrPid_kP[motor_name]
(short) Sets the Proportional gain parameter (P) for PID algorithm for the specified motor port. Because this value is an integer, it is divided by 100 before being applied to the PID algorithm. This value is set on a per-motor basis.
mtrPid_kP[port1] = 75; // Sets the Proportional Gain Parameter in the PID loop to 0.75 (75/100)


mtrPid_kI

short mtrPid_kI[motor_name]
(short) Sets the Integral gain parameter (I) for PID algorithm for the specified motor port. Because this value is an integer, it is divided by 100 before being applied to the PID algorithm. This value is set on a per-motor basis.
mtrPid_kI[port1] = 75; // Sets the Proportional Gain Parameter in the PID loop to 0.75 (75/100)


mtrPid_kD

short mtrPid_kD[motor_name]
(short)Sets the Derivative gain parameter (D) for PID algorithm for the specified motor port. Because this value is an integer, it is divided by 100 before being applied to the PID algorithm. This value is set on a per-motor basis.
mtrPid_kD[port1] = 75; // Sets the Derivative Gain Parameter in the PID loop to 0.75 (75/100)


mtrPid_Deadband

short mtrPid_Deadband[motor_name]
(short) Sets the deadband in PID control for the specified motor port
mtrPid_Deadband[port1] = 10; // Sets the PWM period on port 1 to 50%


mtrPID_PowerLimit

short mtrPid_PowerLimit[motor_name]
(short) Sets the power limit (ceiling) for the specified motor port
mtrPid_PowerLimit[port1] = 100; // Sets the power limit on motor port1 to 100; any values above this will be be set to 100 instead.


mtrPID_SlewUp

short mtrPid_SlewUp[motor_name]
(short) Sets the slew rate when increasing motor speed for the specified motor port.
mtrPid_SlewUp[port1] = 5; // Sets the slew rate for motor port 1 to 5; when the


mtrPID_SlewDown

short mtrPid_SlewDown[motor_name]
(short) Sets the slew rate when decreasing motor speed for the specified motor port.
mtrPid_SlewDown[port1] = 5; // Sets the slew rate (down) for motor port 1 to a value of 5; when the motor power level is decreased, it will increase in steps of 5


mtrPID_Slop

short mtrPid_Slop[motor_name]
(short) Sets the slop (tolerance level) when using PID control to move the specified motor a specific amount
mtrPid_Slop[port1] = 5; // Sets the slop tolerance


mtrPID_PowerSlew

short mtrPid_PowerSlew[motor_name]
(short) Sets the slop (tolerance level) when using PID control to move the specified motor a specific amount
mtrPid_Slop[port1] = 5; // Sets the slop tolerance


mtrPID_ErrorP

const short mtrPid_ErrorP[motor_name]
(const) Used to read the Proportional (P) error difference of the specified motor
int x = 0;                 // Creates a variable to store the Proportional error value
x = mtrPid_ErrorP[port1]; // Reads the Proportional error value from motor port 1 and sets the integer x equal to it


mtrPID_ErrorI

const short mtrPid_ErrorI[motor_name]
(const) Used to read the Integral (I) error difference of the specified motor
int y = 0;                 // Creates a variable to store the Integral error value
y = mtrPid_ErrorI[port1]; // Reads the Integral error value from motor port 1 and sets the integer y equal to it


mtrPID_ErrorD

const short mtrPid_ErrorD[motor_name]
(const) Used to read the Derivative (D) error difference of the specified motor
int z = 0;                 // Creates a variable to store the Derivative error value
z = mtrPid_ErrorD[port1]; // Reads the Derivative error value from motor port 1 and sets the integer z equal to it


mtrPID_SyncErr

const short mtrPid_SyncErr[motor_name]
(const) Used to read the Synchronization error difference of the specified motor; used with the driveSynchronized() and driveSynchronizedToPosition() functions
int x = 0;                 // Creates a variable to store the Synchronization error value
z = mtrPid_SyncErr[port1]; // Reads the Synchronization error value from motor port 1 and sets the integer x equal to it


mtrPID_DriveStraightErr

const short mtrPid_DriveStraightErr[motor_name]
(const) Used to read the Drive Straight error difference of the specified motor; used with the driveStraight() and driveStraightToPosition() functions
int x = 0;                 // Creates a variable to store the Drive Straight error value
z = mtrPid_DriveStraightErr[port1]; // Reads the Drive Straight error value from motor port 1 and sets the integer x equal to it


Functions

moveMotorToPosition

void moveMotorToPosition(tMotor nMotor, int nMaxSpeedToUse, long nEncoderTargetPosition)
(void) Used to read the Drive Straight error difference of the specified motor; used with the driveStraight() and driveStraightToPosition() functions
moveMotorToPosition(port1, 75, 1000); // Rotates the motor on port one forward at 75 power level until 1000 encoder counts are reached


driveStraight

void driveStraight(tMotor nLeftMotor, tmotor nRightMotor, int nSpeed)
(void) Used to drive the robot straight using the specified motors and power levels
driveStraight(port1, port10, 50); // Drives the robot straight forward by moving the motors on ports 1 and 10 at 50 power level.


driveSynchronized

void driveSynchronized(tMotor nLeftMotor, tmotor nRightMotor, int nLeftSpeed, int nRightSpeed)
(void) Used to synchronize two motors to move at the same speed and direction
driveStraight(port1, port10, 50); // Drives the robot straight forward by moving the motors on ports 1 and 10 at 50 power level.


stopDriveSynchronized

void driveSynchronized(tMotor nMotor)
(void) Used to stop motor synchronization on the specified motor
stopDriveSynchronized(port1); // Stops motor synchronization on on port 1


slaveMotor

void slaveMotor(tMotor nSlaveMotor, tMotor nMasterMotor)
(void) Used to specify a master and slave motor when pairing motors
slaveMotor(port1, port2); // Sets the motor on port1 as the slave motor and the motor on port 2 as the master motor


driveStraightToPosition (Coming Soon!)

void driveStraightToPosition(tMotor nLeftMotor, tmotor nRightMotor, int nMaxSpeedToUse, long nEncoderTargetPosition)
(void) Used to drive the robot straight for a specified amount of encoder counts
driveStraightToPosition(port1, port10, 75, 1200); // Drives the robot straight forward by moving the motors on ports 1 and 10 at a maximum of 75 power level for 1200 encoder counts.


driveSynchronizedToPosition (Coming Soon!)

void driveStraightToPosition(tMotor nLeftMotor, tmotor nRightMotor, int nMaxSpeedToUse, long nEncoderTargetPosition)
(void) Used to drive the robot straight for a specified amount of encoder counts using synchronized motors
driveStraightToPosition(port1, port10, 75, 1200); // Drives the robot straight forward by synchronizing the motors on ports 1 and 10 at a maximum of 75 power level for 1200 encoder counts.


Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox