大家好,现在有个项目需要用到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
|