本帖最后由 FSL_TICS_ZJJ 于 2014-5-4 11:31 编辑
- volatile static int err=0,last_err=0,derr=0,l_last_err,dderr;
- volatile static int M_PWM=0;
- volatile static int Kd,Kp,Ki;
- err=50-SenA; //偏差 50代表中间
- derr=err-last_err; //derr dderr赋初值
- dderr=err-2*last_err+l_last_err;
-
- Kp=9;//5,7,8,9,
- Ki=0;
- Kd=0;
-
- M_PWM=derr*Kp+Ki*err+dderr*Kd; //15 5
- //********************************************/
- /********************************************/
- if(M_PWM<-50) //限位
- M_PWM=-50;
- if(M_PWM>50)
- M_PWM=50;
- /********************************************/
- l_last_err=last_err; //记录上上次偏差
- last_err=err; //记录上次偏差值
- Set_Servo(50+M_PWM); //最后赋值给舵机函数
复制代码
我现在只是把pid的三个系数一个一个的调,但是比例系数p始终不对,始终不稳定。大家看看程序有没有错误
是这样的,我修改了一下,现在好了,谢谢大家了
一周热门 更多>