龙空技术网

基于PID算法的舵机转向小车(三)PID算法及参数整定

齐落山大勇 208

前言:

而今大家对“智能小车pid算法程序图”可能比较关怀,兄弟们都想要剖析一些“智能小车pid算法程序图”的相关资讯。那么小编也在网摘上网罗了一些有关“智能小车pid算法程序图””的相关知识,希望你们能喜欢,各位老铁们快快来学习一下吧!

增量式数字PID算法

在单片机系统中数字增量式PID算法比较容易实现,采用周期为T,

每隔T时间采样一次电机的转速得到一个测量值序列:

v(1),v(2),v(3)……v(k)

而k个采样周期设定的目标值形成的序列为:

s(1),s(2),s(3)……s(k)

目标值与时间测量值之间的误差的序列为:

e(1),e(2),e(3)……e(k)

(1)比例环节

kp*e(k),kp为比例系数,比例环节表示当前采样周期的误差

(2)积分环节

ki*(e(1)+e(2)+……e(k)),ki为积分系数,积分环节表示前k个采样周期的历史误差

(3)微分环节

kd(e(k)-e(k-1))/T,kd为微分系数,微分环节反应的是未来误差的变化趋势

所以三个环节组合在一起就是当前的控制量:

u(k)=kp*e(k)+ki*(e(1)+e(2)+……e(k))+kd(e(k)-e(k-1))/T

那么前一个周期的输出量为

u(k-1)==kp*e(k-1)+ki*(e(1)+e(2)+……e(k-1))+kd(e(k-1)-e(k-2))/T

则第k个采样周期相对于k-1个采样周期输出量的变化量:

du(k)=u(k)-u(k-1)

=kp(e(k)-e(k-1))+ki(e(k)-e(k-1))+kd*(e(k-2*e(k-1)+e(k-1)))

所以我们只需要关心du(k),也就是第k个采样周期的控制量在第k-1个采样周期的基础上变化多少即可。可见采用增量式PID,占用单片机的内存小,易于实现。

PID程序设计

/*Bias为e(k)Bias_1为e(k-1)Bias_2为e(k-1)v:测量转速s:目标转速*/  Bias=s-v;  	PwmA+=(int)(Velocity_Kp*(Bias-Bias_1)+Velocity_Ki*Bias+Velocity_Kd*(Bias-2*Bias_1+Bias_2));	Bias_2 = Bias_1;	Bias_1 = Bias;
参数整定

将电机的转速反馈到上位机,根据经验或者采用寻优算法进行整定。我制作了一个上位机软件,如图:

图1 参数整定软件

图中是让电机正转3秒后,反转3秒的情况。

标签: #智能小车pid算法程序图 #增量式pid控制算式具有哪些优点和缺点 #单片机增量式pid算法 #单片机增量式pid算法实验报告