智能车制作

标题: 电机PID [打印本页]

作者: higeo    时间: 2013-6-3 22:26
标题: 电机PID
论坛上找的PID代码:

//声明变量
//定义变量
float Kp; //PID 调节的比例常数
float Ti; //PID 调节的积分常数
float T; //采样周期
float Td; //PID 调节的微分时间常数
float a0;
float a1;
float a2;
float ek; //偏差e[k]
float ek1; //偏差e[k-1]
float ek2; //偏差e[k-2]
float uk; //u[k]
int uk1; //对uk 四舍五入求整
int adjust; //最终输出的调整量
//变量初始化,根据实际情况初始化
Kp=;
Ti=;
T=;
Td=;
a0=Kp*(1+T/Ti+Td/T);
a1=-Kp*(1+2*Td/T);
a2=Kp*Td/T;
// Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数
ek=0;
ek1=0;
ek2=0;
uk=0;
uk1=0;
adjust=0;
int pid(float ek)
{
                if(gabs(ek)<ee) //ee 为误差的阀值,小于这个数值的时候,不做PID 调整,避免误差较小
                {                                //时频繁调节引起震荡。ee 的值可自己设
                                adjust=0;
                }
                else
                {
                                uk=a0*ek+a1*ek1+a2*ek2;
                                ek2=ek1;
                                ek1=ek;
                                uk1=(int)uk;
                                if(uk>0)
                                {
                                                if(uk-uk1>=0.5)
                                                {
                                                                uk1=uk1+1;
                                                }
                                }
                                if(uk<0)
                                {
                                                if(uk1-uk>=0.5)
                                                {
                                                                uk1=uk1-1;
                                                }
                                }
                                adjust=uk1;
                }
                return adjust;
}
float gabs(float ek)
{
                if(ek<0)
                {
                                ek=0-ek;
                }
                return ek;
}
这个应该是增量式的PID吧,最后计算出来的adjust应该直接付给电机还是怎么弄?
作者: higeo    时间: 2013-6-4 07:28
自己顶~~~~~~~~
作者: 林的0922    时间: 2013-6-4 08:48
这不是你写的程序 么
作者: higeo    时间: 2013-6-6 09:22
林的0922 发表于 2013-6-4 08:48
这不是你写的程序 么

这是在论坛上找的,不是我写的

作者: WGQHHH    时间: 2013-9-10 21:59
他们是根据这个资料写的
作者: zhangdaxu_SEU    时间: 2014-2-28 16:47
XIEXIE..
作者: whisker    时间: 2014-7-26 18:41
楼主问题解决了吗,求解
作者: lihuanhuan    时间: 2014-7-26 21:06


作者: 小卡    时间: 2014-8-6 12:00
付给PWM占空比寄存器吧
作者: 荒城ideal    时间: 2017-3-16 21:17
这个有效果没呀?




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2