智能车制作

标题: PID疑问(2) 【悬赏10贡献】 [打印本页]

作者: 蛋求无悔    时间: 2013-3-11 15:42
标题: PID疑问(2) 【悬赏10贡献】
前言:我用的是增量式PID
问题:请问用此式子                Control.OutPut=Up+Ud+Ui;                  //计算增量和
最后得到的 Control.OutPut应该赋值给谁?是占空比寄存器吗???

作者: qinlu123    时间: 2013-3-11 15:42
蛋求无悔 发表于 2013-3-11 17:10
你看一下我对你多说的东西的理解是否正确,谢谢

下面是那段程序,我先只用比例调节

我说的是PWMDTY01+=Control.OutPut;你再乘括号里的参数不就相当于一个乘法分配率吗,何必多此一举呢。

作者: 1174544639    时间: 2013-3-11 16:19
应该乘一个合适的参数再付给占空比寄存器,这个参数是实验出来的
作者: 穆旦阿斗    时间: 2013-3-11 16:22
原来的值加这个值 增量式输出是差值
作者: 蛋求无悔    时间: 2013-3-11 16:34
本帖最后由 蛋求无悔 于 2013-3-11 16:36 编辑
1174544639 发表于 2013-3-11 16:19
应该乘一个合适的参数再付给占空比寄存器,这个参数是实验出来的

嗯,你这么说我觉得挺对的,直接赋值感觉没道理,尤其是我把脉冲转换成了速度

但是我还想问一下具体应该怎么做才可以测出这个参数??

如果可以的话,10个贡献就给你了,O(∩_∩)O~


作者: qinlu123    时间: 2013-3-11 16:40
此式子有三个参数,UP、UI、UD各乘一个合适参数然后赋值给OUTPUT,然后你还需要一个变量(就叫他占空比吧)占空比=占空比+OUTPUT。关于参数确定是很难的需要反复尝试。
作者: 1174544639    时间: 2013-3-11 16:46
蛋求无悔 发表于 2013-3-11 16:34
嗯,你这么说我觉得挺对的,直接赋值感觉没道理,尤其是我把脉冲转换成了速度

但是我还想问一下具体应 ...

这个你就大约来试,感觉得出来的数不是很大就先送给寄存器试试,然后看电机转速,适当调整那个参数,慢慢就好了
作者: 蛋求无悔    时间: 2013-3-11 16:46
本帖最后由 蛋求无悔 于 2013-3-11 16:59 编辑
qinlu123 发表于 2013-3-11 16:40
此式子有三个参数,UP、UI、UD各乘一个合适参数然后赋值给OUTPUT,然后你还需要一个变量(就叫他占空比吧) ...

你说的这三个参数是比例增益、微分常数和积分常数吧,这个假设已经确定好了

得到的就可以和占空比相加然后付给占空比吗???可否看一下二楼的意见,他说的是否有道理,谢谢


作者: qinlu123    时间: 2013-3-11 17:01
蛋求无悔 发表于 2013-3-11 16:46
嗯,请问一下这个参数具体应该怎么确定呢

最直观的的方法就是反复试验

作者: 蛋求无悔    时间: 2013-3-11 17:04
qinlu123 发表于 2013-3-11 17:01
最直观的的方法就是反复试验

你说的这三个参数是比例增益、微分常数和积分常数吧,这个假设已经确定好了

得到的就可以和占空比相加然后付给占空比吗???可否看一下二楼的意见,他说的是否有道理,谢谢

作者: 蛋求无悔    时间: 2013-3-11 17:10
1174544639 发表于 2013-3-11 16:46
这个你就大约来试,感觉得出来的数不是很大就先送给寄存器试试,然后看电机转速,适当调整那个参数,慢慢 ...

你看一下我对你多说的东西的理解是否正确,谢谢

下面是那段程序,我先只用比例调节
void PidWork( void )
{
        float Up=0,Ud=0,Ui=0;  

        Control.E=Control.ValueSet- CurrentValue;       //得到本次误差,采样值减去设定值
        Up=Control.Kp*(Control.E-Control.E_1);
         
        Control.E_2=Control.E_1;                     //历史存储
        Control.E_1=Control.E;

        Control.OutPut=Up+Ud+Ui;                  //计算增量和

}

之后我PWMDTY01=Control.OutPut*(参数) ,你说的是改动括号内的参数对吗

作者: qinlu123    时间: 2013-3-11 17:31
蛋求无悔 发表于 2013-3-11 17:04
你说的这三个参数是比例增益、微分常数和积分常数吧,这个假设已经确定好了

得到的就可以和占空比相加 ...

你让OUTPUT乘个数和直接调PID的三个参数有什么两样,二楼的说法不就是小学学的分配率吗。

作者: wen123    时间: 2013-3-11 18:43
说得好

作者: 蛋求无悔    时间: 2013-3-11 18:48
qinlu123 发表于 2013-3-11 17:38
我说的是PWMDTY01+=Control.OutPut;你再乘括号里的参数不就相当于一个乘法分配率吗,何必多此一举呢。

元老一语中的,回到最初的疑问,我是把脉冲累加器得到的脉冲数转换成了速度,然后用设定的速度减去算出的速度,
通过这个速度差用PID调节得到的Control.OutPut,可以直接付给PWMDTY01吗??
还是不用转换,直接用脉冲差算出Control.OutPut给PWMDTY01??

元老给力,谢谢!!!


作者: qinlu123    时间: 2013-3-11 18:57
蛋求无悔 发表于 2013-3-11 18:48
元老一语中的,回到最初的疑问,我是把脉冲累加器得到的脉冲数转换成了速度,然后用设定的速度减去算出的 ...

我没听明白

作者: 蛋求无悔    时间: 2013-3-11 19:04
qinlu123 发表于 2013-3-11 18:57
我没听明白

方便告诉我QQ号吗,我加你好友,交流更方便,谢谢
作者: 1174544639    时间: 2013-3-11 22:52
蛋求无悔 发表于 2013-3-11 17:10
你看一下我对你多说的东西的理解是否正确,谢谢

下面是那段程序,我先只用比例调节

你那样可以,我本意是把Control.OutPut乘以一个参数
作者: wangshi_8678    时间: 2013-3-12 09:27
解决了啊!
作者: 穿越火线大月    时间: 2013-3-12 14:03
学习了
作者: 寻找钢叉的猹    时间: 2013-5-8 20:27

作者: 1102252970    时间: 2013-5-18 19:55
蛋求无悔 发表于 2013-3-11 18:48
元老一语中的,回到最初的疑问,我是把脉冲累加器得到的脉冲数转换成了速度,然后用设定的速度减去算出的 ...

LZ疑惑解决了吗,能否指导一下,我也在想要不要把速度差转换成占空比增量呢
作者: caixianneng    时间: 2013-11-13 21:37
1102252970 发表于 2013-5-18 19:55
LZ疑惑解决了吗,能否指导一下,我也在想要不要把速度差转换成占空比增量呢

求同





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