1、理论
1、代码
typedef struct
{
s32 Uplimit; //输出限幅
s32 Downlimit; //输出限幅
s32 target; // 目标输出量
s32 feedback; // 实际输出量
float Kp;
float Ki;
float Kd;
float Out;
float e_0; //当前误差
float e_1; //上次误差
float e_2; //上上次误差
float ei;
float ed;
}sPID;
sPID spid1;
void PID_Init1(void)
{
spid1.Uplimit = 4095;
spid1.Downlimit = -4095;
spid1.Kp = 20;
spid1.Ki = 0.1;
spid1.Kd = 0;
spid1.e_0 = 0;
spid1.e_1 = 0;
spid1.e_2 = 0;
spid1.ei = 0;
spid1.ed = 0;
}
//位置式 200mS计算一次
u32 pid_calc(sPID *pid,float target ,float feedback)
{
pid->target = target;
pid->feedback = feedback;
pid->