【算法】舵机位置式pid

s3010舵机基础上的舵机位置式pid算法实现

k60 DN 144 平台

给与舵机50hz的工作频率为获取较大的工作频率!

在智能车竞赛上测试通过。

const uint16 steering_mid=715;
int16 steer=715;
const uint16 steering_left=620;
const uint16 steering_right=800;
int16 error=0, error_nihe,lasterror=0;
int8 Max_error;

extern float Kd;   //
extern float Kp;   //
extern int8 ave;
extern int8 Center_Num;
extern uint8 CentreLineData[60];//保存得到的中线的行数 数组大小为图像行数 60

/************************************************** 
** 函数名称: void steer_control(void)
** 功能描述: 舵机打脚量控制函数
** 输    入:
** 输    出: 
** 说明:
***************************************************/
void SteerControl(void)
{                                                                      
	error = ave-40;     
	error_nihe = (int)(Kp*error+Kd*(error-lasterror)); 
	//   if(error_nihe>0)
	//   {
	//     error_nihe*=1.113;
	//   }
	steer = steering_mid - error_nihe;
	
	if(steer>=steering_right)
	{
		steer=steering_right;    
	} 
	else if(steer<=steering_left)
	{
		steer=steering_left;
	}
	
	lasterror=error;
	Max_error=error;
	
	if(Max_error>39)
	{
		Max_error=39;
	}
	else if (Max_error<-39)
	{
		Max_error=-39;
	}
	FTM_PWM_Duty(SD5_FTM,SD5_CH,steer);  
}
  • 22
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值