搜索
bottom↓
回复: 13

第一次调无刷电机PID,总不能使系统震荡,帮看图正常吗?

[复制链接]

出0入0汤圆

发表于 2016-9-22 17:17:11 | 显示全部楼层 |阅读模式
电机为直流无刷有感电机。PID采用网友 tim4146 提供的函数,http://www.amobbs.com/forum.php? ... 3&highlight=PID
int Speed_PIDAdjust(PIDtypedef *PIDx,float nextpoint){       
        int iError,iincpid;
        iError=PIDx->setpoint-nextpoint;  //????

        iincpid= ((PIDx->proportion)*(iError-(PIDx->last_error)))
                                 +((PIDx->b)*(PIDx->integral)*iError)
                                 +((PIDx->derivative)*(iError-2*(PIDx->last_error)+(PIDx->prev_error)));
       
        PIDx->prev_error=PIDx->last_error; //????,??????
        PIDx->last_error=iError;

        iincpid+=PIDx->Uk_1;
        PIDx->Uk_1=iincpid;
       
        if     (iincpid> PWM_Max)       
                iincpid= PWM_Max;
        else if(iincpid< PWM_Min)       
                Speed_To_Current= PWM_Min;       
        return(iincpid) ;
}

PID调整周期为100MS。请大家帮看看问题出在那里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2016-9-22 17:19:04 | 显示全部楼层
淡红色的线为目标转速800RPM,深红色为当前转速。

出0入0汤圆

 楼主| 发表于 2016-9-23 08:51:01 | 显示全部楼层
没人理我,看来只能用位置式的。

出0入0汤圆

发表于 2016-9-24 10:12:46 | 显示全部楼层
首先如果你是速度控制100ms的控制周期太慢了,至少要1ms的控制周期
第二调节速度模式只用PI控制就可以,所以你要做速度阶跃去调节,不是运转速去调节。

出0入0汤圆

发表于 2016-9-24 10:20:14 | 显示全部楼层
在速度环PI控制过程中,比例P是用来应付瞬态变化或者扰动的,提高比例可以减小稳态误差提高瞬态响应能力,但过大的P会导致系统失稳
积分在其中用来消除稳态误差,如果你是一直恒转速工作,你可以通过积分去弥补误差。
但你的控制频率太低了,通常速度环计算周期要做到4K。

出0入0汤圆

发表于 2016-9-24 10:46:55 | 显示全部楼层
LZ,你的电机驱动器是什么

出0入0汤圆

 楼主| 发表于 2016-9-26 09:39:47 | 显示全部楼层
sangmo2015 发表于 2016-9-24 10:12
首先如果你是速度控制100ms的控制周期太慢了,至少要1ms的控制周期
第二调节速度模式只用PI控制就可以,所 ...

sangmo2015你好,由于电机采用的是霍尔采样,我按最低转速600RPM计算100MS正好是一个电机旋转周期,电机是5极对数,如按电子周期是20MS,如果按1MS为PID计算周期会不会太短?

第二调节速度模式只用PI控制就可以,所以你要做速度阶跃去调节,不是运转速去调节。 ----------------这句不太明白,您的意思是不是P I 同时调整,而不是单纯的调整P?

出0入0汤圆

 楼主| 发表于 2016-9-26 09:43:37 | 显示全部楼层
3DA502 发表于 2016-9-24 10:46
LZ,你的电机驱动器是什么

没有用驱动器,用的是单片机+MOS管的方式,电机是直流无刷有感电机,电池供电,功率40W.

出0入0汤圆

发表于 2016-10-22 23:42:47 来自手机 | 显示全部楼层
同问,不知道速度阶跃是??

出0入0汤圆

发表于 2016-10-23 19:30:55 | 显示全部楼层
问一下楼主,如何平滑准确的计算当前速度。可能楼主问题这方面也有,之前做过一个板子,驱动电机的。编码器是512线的,由于电机是减速后连得编码器,所以编码器旋转速度并不快。我的计算周期是10ms,但是这样计算出来的速度是十几/ms。最后在测试的时候发现,速度波形也是震荡的。比如设定值是18,但是一会速度是17,一会19。出现这一问题可能因为速度本身数值过小导致误差变大,±1误差很大,使得速度计算变得不准确,所以最后算法输出可能就会是震荡的一个波形。

出0入0汤圆

 楼主| 发表于 2016-10-24 13:14:00 | 显示全部楼层
zengqfa08 发表于 2016-10-22 23:42
同问,不知道速度阶跃是??

我现在用的是位置式的了。用起来感觉还行,可能我的系统不适合用增量式了吧。

出0入0汤圆

 楼主| 发表于 2016-10-24 13:33:46 | 显示全部楼层
alsowang 发表于 2016-10-23 19:30
问一下楼主,如何平滑准确的计算当前速度。可能楼主问题这方面也有,之前做过一个板子,驱动电机的。编码器 ...

我不知你的电机是用在什么上面的。我是用在压缩机上的,对速度精确要求不是太高。速度采样是霍尔元件,是以一个电子周期滤波计算转速,加入PID后正负误差100转左右在1500转的情况下。但是当以一个机械周期来计算转速时在1500转的情况下误差不会超过5转。由于压缩机是公司自己做的,我猜想可能是在一个机械周期内,受力总是不均匀,PID会根据转速实时进行调整所以电子周期会不是很准。但从长时间来看还是满准的。由于我也是接触不久,没有深入了解,所以以上只是一家之言,仅供参考。

出100入101汤圆

发表于 2016-10-24 15:38:29 | 显示全部楼层
http://www.amobbs.com/forum.php? ... 5%E5%8A%A8%E8%BD%A6
上一个用STC12C5404AD主控的无刷电动车控制器的全部资料

出0入0汤圆

 楼主| 发表于 2016-10-25 09:31:20 | 显示全部楼层
fengyunyu 发表于 2016-10-24 15:38
http://www.amobbs.com/forum.php?mod=viewthread&tid=5463881&highlight=%E7%94%B5%E5%8A%A8%E8%BD%A6
上 ...

谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-15 09:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表