关于运用PID遇到的一点问题,望大神路过救救小白,纠结3天了,没有一点进展。。。

2019-08-14 16:53发布

如题,我在做关于吹帆板实验的过程种需要闭环控制,就是实现按键输入一个角度用空心杯电机吹动帆板达到指定角度。所以需要PID算法。我用的是一套网上找的增量式PID算法,我在实际操作过程中发现,PID算法对于我的设定值没有反应,输出的PWM波感觉根本没有进入算法(跟想象的不太一样)。传感器模块用的mpu6050,用的原子哥的例程,板子是stm32f103zet6,希望各位大佬指点一二,在此感激不尽!下面附上完整程序,主要问题就是在主函数里的PWM输出和PID。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
学霸君
1楼-- · 2019-08-14 21:03
首先分别把P,I,D,3个参数分别单独作用,同时用屏幕显示当前值与PID单独调节后的值,看看每个参数是否有反应。还有,你的PID的3个参数设置太小,你原始值是什么数据?还有,我看你的设定值是一个KEYstar()函数,而你的实际值是一个Temp/10定值,最好改一下,不然方向会反。最后再查一下你这个函数KEYstar()的返回值类型,看看是否为float类型。PID调节是件很蛋疼的事情,任重而道远。
我不想说
2楼-- · 2019-08-15 01:03
自己顶一下,希望不要沉
我不想说
3楼-- · 2019-08-15 05:16
真的沉了吗,5天了   好心大神带带小白,谢谢啦!
学霸君
4楼-- · 2019-08-15 07:24
最后,你用的是增量式的,而的PID调节后的值又直接赋值给了定时器,而你的PID三个值又太小,我不太清楚你的KEYstar()函数返回值有多大。而你的PID只是与你的两次之间的变化大小来决定的,你先试试把P调大,I,D值给0,然后把外界改变KEYstar()函数测得的值,看看你电机转速时候有变化。如果有,那应该是你PID参数整定有问题。
我不想说
5楼-- · 2019-08-15 08:33
 精彩回答 2  元偷偷看……
我系林峯
6楼-- · 2019-08-15 10:16
老哥 能把搞出来 的程序发下吗   急需  谢谢啊啊

一周热门 更多>