增量pi和pid调节代码

比较简单的增量pid控制,后面要学习平衡车pid和云台pid,四轴pid。

/*
	作者:hes
	
	日期:17-11-10

	功能:增量式 pi和pid控制

*/

#include	"pi_control.h"


float KP=0.01;			//比例

float KI=0.01;			//积分

float KD=0;			//微分

float bias=0;		//当前差

float last_bias=0;	//上次差

float last_old_bias=0;	//上上次差

float out_value=0;	//输出的控制变量


//pi控制,目标值,当前值
u32 PI_ctr(u32 target,u32 present)
{
	
	bias=target-present;
	
	out_value=KP*(bias-last_bias)+KI*bias;
	
	last_bias=bias;
	
	return (u32)(out_value+0.5);
	
}

//pid控制,目标值,当前值
u32 PID_ctr(u32 target,u32 present)

{
	 
    float ep, ei, ed;  
      
    bias=target-present;
	
    ep = bias  - last_bias;  
    ei = bias;  
    ed = bias - 2*last_bias + last_old_bias;  
	
    out_value = KP*ep + KI*ei + KD*ed;  
	
    last_old_bias = last_bias;  
    last_bias = bias;  
	
    return (u32)(out_value+0.5); 
	
	
}


你可能感兴趣的:(算法)