打印

关于PI问题请教

[复制链接]
922|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jwwhy|  楼主 | 2014-11-18 12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,现在有个项目需要用到PI控制马达转速, 以前没做过,在网上找了个相关程序,有几个问题想请教

srtuct PID
     {
    double   pconst,    //比例控制常量
          iconst,     //积分控制常量
          dconst;    //微分控制常量
    double   ErrorSum;      //误差累计
    double   iMax,iMin;      //积分上下限
    double   Vnew;         //当前速度
         };
  比例:
    Vnew = GetV();            //获得当前速度
    error = aim - Vnew;      //误差=目标速度 - 当前速度
    pTerm = error*pconst;     //比例项的值就是误差乘上比例常量


  积分:
                Vnew = GetV();            //获得当前速度
    ErrorSum += (aim - Vnew);      //每一次的误差累计起来
    if(ErrorSum > iMax)ErrorSum = iMax;
    else if(ErrorSum < iMin)ErrorSum = iMin;
    iTerm = ErrorSum *iconst;       //误差和乘上积分常量
    Motor(iTerm+pTerm);      //让电机根据得出的值工作


(1 )请问 Motor(iTerm+pTerm);      这个iTerm+pTerm传到函数里面是控制什么?PWM的占空比吗? 

(2)如果是控制占空比的话,假如我芯片的PWM是10位的,而我的产品最大转速是5120转,实际占空比是不是 =  实际测得的转速/5

  


相关帖子

沙发
airwill| | 2014-11-18 13:46 | 只看该作者
1. iTerm+pTerm传到函数里面是控制什么? 就是电机调节参数, 最终可以控制 PWM 的占空比.

2. 你已经大体算理解了.  不过实际情况, 由于负载情况和外力情况而不会有这样的线性的关系 (比如风扇电机在有风的环境中, 车辆在坡路上), 而 PID 能够适应这种外部条件变化的环境.

使用特权

评论回复
板凳
pass1876| | 2014-11-18 17:52 | 只看该作者
PID比较复杂

使用特权

评论回复
地板
pass1876| | 2014-11-18 17:53 | 只看该作者
你参数如何获得?

使用特权

评论回复
5
jwwhy|  楼主 | 2014-11-18 19:39 | 只看该作者
继续请教2楼的
1. iTerm+pTerm传到函数里面是控制什么? 就是电机调节参数, 最终可以控制 PWM 的占空比.      如果iTerm+pTerm = 50,那占空比就是50/1024? 是这样的吗?

2. 你已经大体算理解了.  不过实际情况, 由于负载情况和外力情况而不会有这样的线性的关系 (比如风扇电机在有风的环境中, 车辆在坡路上), 而 PID 能够适应这种外部条件变化的环境.
  如楼上所讲,那该如何调整?是要根据实际情况再细调吗?


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

281

帖子

0

粉丝