是这样的,我现在用电机,加上一个绝对值编码器,这个编码器只能转到99圈就归零重新计算。
我现在想用单片机控制这个电机在编码器的两个值之间转,通过第一次上电设置两个限位值,从编码器读取的。
然而,如果我刚刚设置的值在0到99圈内,也就是编码器的最小值跟最大值之间转,这没问题。
如果,设置了是在80到10,就是80 81……0 1……10。这样我应该就得个算法,把以上两种可能的情况统一起来,通过一个算法来解决。
说的好乱,大家应该能看懂吧。
有什么算法推荐一下吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
x=a-b;
if(x>50)x-=100;
if(x<-50)x+=100;
代入两组数据试试:
1.a=99,b=0,x=1;
2.a=0,b=99,x=99;
从99到0只需转动1步,所以第1组算出来是对的;
从0到99只需反向转动1步,所以第2组算出来不对,x应当为-1才对。
if(a>b)
{
a-b=C0;
b+100-a=C1;//比较C0和C1的值
}
else(a<b)
{
b-a=C2;
a+100-b=C3;//比较C2和C3的值
}
还需要a==b的情况,
仅供参考!
一周热门 更多>