if(speedTimer==5)
{
speedTimer=0;
////////Speed PID///////////////
positionLast=position;
lastSpeed=armSpeed;
position=SSI(1);
armSpeed=calcSpeed(position,positionLast);
armSpeedArr[0]=armSpeedArr[1];
armSpeedArr[1]=armSpeedArr[2];
armSpeedArr[2]=armSpeed;
armSpeed=mid(armSpeedArr[0],armSpeedArr[1],armSpeedArr[2]);
if(abs(armSpeed)<=1)
armSpeed=0;
absPositionLast=absPosition;
absPosition+=armSpeed;
sp_error_p = setSpeed-armSpeed;
sp_error_d = armSpeed-lastSpeed;
sp_error_i = sp_error_i + sp_error_p;
sp_error_i=constrain(sp_error_i,-1000,1000);
tempSpSpeed = -(np*sp_error_p/10.0 + nd*sp_error_d/10.0 + ni*sp_error_i/100.0);
tempSpSpeed=constrain(tempSpSpeed,-delta,delta);
//if(PIDSign==false||SpeedPIDSign==false||abs(degree)>155)
if(PIDSign==true&&SpeedPIDSign==true&&abs(degree)>155)
{
setPoint+=tempSpSpeed;
if(setPoint>originPoint+maxDelta)
setPoint=originPoint+maxDelta;
else if(setPoint<originPoint-maxDelta)
setPoint=originPoint-maxDelta;
}
else if(SpeedPIDSign==true)
{
setPoint=originPoint;
}
}
这是不是就是步进的闭环?
控制在+-90度之间?
什么叫"速度做为被控量,平衡点是180+-8作为输出?
我们当时用的伺服,可是没有考虑转轴杆子要左右对称导致转动惯量过大,惯性过大,伺服电机不稳 |