初级会员
- 积分
- 81
- 金钱
- 81
- 注册时间
- 2016-5-19
- 在线时间
- 14 小时
|
我是利用PID控制转速的。
#include "PidControl.h"
#define ESC_MAX 5000 //.0
#define GAP 0 //.0
int Velocity_Control_201(int current_velocity_201,int target_velocity_201) //
{
const int v_p = 20; //40
const float v_i = 0.1;
const int v_d = 0; //
static int error_v[2] = {0,0}; //.0
static int output = 0; //.0
static int error_i;
if(abs(current_velocity_201) < GAP) //protection
{
current_velocity_201 = 0;
}
error_v[0] = error_v[1]; //v[0]:last error; v[1]:now error;
error_v[1] = target_velocity_201 - current_velocity_201; //differential error
error_i += error_v[0];
output = error_v[1] * v_p
+ (error_v[1] - error_v[0]) * v_d
+ error_i * v_i;
if(output > ESC_MAX) //Set upper limit
{
output = ESC_MAX;
}
if(output < -ESC_MAX) //Set lower limit
{
output = -ESC_MAX;
}
return output;//cyq:for6015 ·′Ïò
};
|
|