详细用法请联系我 作者: 单片机老兵 QQ号: 123904022
/********************** 声明结构变量 ************************/
struct PID
{
float SetSpeed;
float ActualSpeed;
float err;
float err_last;
float Kp , Ki , Kd;
float voltage;
float integral;
};
/*** 初始化 ***/
void PID_init(void)
{
Ud.SetSpeed = 0.0;
Ud.ActualSpeed = 0.0;
Ud.err = 0.0;
Ud.err_last = 0.0;
Ud.voltage = 0.0;
Ud.integral = 0.0;
Ud.Ep = 0.25;
Ud.Ei = 0.15;
Ud.Ed = 0.0;
}
/***************************** DSP PID 函数**********************************************************
* Function Name : Calculation浮点通用STM32F4xx ARM-DSP-PID 计算函数
* Description : 详细用法请联系我 拥有者: 单片机老兵 QQ号: 123904022
* Input : Kp 比例 Ki 积分 Kd 微分
* Input : Err 本次偏差 , Integral 积分偏差 , Err_last 上一次偏差
* Output : Adjust_the 调整值
* Return : μ÷???μ
*****************************************************************************************************/
float Calculation(float Kp ,float Ki , float Kd , float Integral , float Err , float Err_last)
{
float Temp1; // 临时变量
float Temp2; // Adjust_the 调整值
arm_mult_f32(&Kp , &Err , &Temp1 , 1);
arm_mult_f32(&Ki , &Integral , &Temp2 , 1);
arm_add_f32(&Temp1 , &Temp2 , &Temp1 , 1);
arm_sub_f32(&Err , &Err_last , &Temp2 , 1);
arm_mult_f32(&Kd , &Temp2 , &Temp2 , 1);
arm_add_f32(&Temp1 , &Temp2 , &Temp2 , 1);
return(Temp2);
}
文章评论(0条评论)
登录后参与讨论