2016-08-01
我用一个欧姆龙的增量式旋转编码器作为旋转台的角度测量,编码器为2000P/r,安装在减速电机的输出轴,旋转台转速为 0~5转/分钟。我编写了程序将编码器的A脉冲信号转换为角度,B信号为方向,Z信号为零位。现在遇到一个问题就是当电机频繁开停时,会造成角度测量误差,且均为正误差。编码器自身没问题,也不存在干扰,经检查发现旋转台在停止的瞬间,会有一个轻微的摆动,这就导致某一位置的脉冲重复累计,造成角度误差,严重时每转会多出几十个脉冲。请教一下,如何通过合理的程序解决这个问题。谢谢了!
评论4
楼主 2016/8/6 22:08:18
用AB相高速计数方式,每次到Z相清零一次
楼主 2016/8/8 16:24:49
最好把程序发出来帮你看看
楼主 2016/8/9 14:47:49
看了你的问题,你好象对编码器不是很明白,A相和B相是互差90度的脉冲,你的程序中可能只用了A相,这样不管正转,反转,抖动,你的角度都会增加,你应当A,B相都用,用加减计数模式,怎么转都不会有误差
楼主 2016/8/10 15:07:16
以下两段程序同步运行,此程序只输出编码器每转的脉冲个数。实际运行时若旋转台连续运行,则每转的编码器脉冲个数基本稳定在2000,若中途不断开停,则每转脉冲数会大量增加。 1、角度测量 nMaiChongShu=0 脉冲数 nZhuanJiao=0 wait(BianMaQi_Z==true) 等待Z脉冲 while true wait(BianMaQi_A==true) 等待A脉冲 if BianMaQi_B==true 根据B脉冲判断方向 nMaiChongShu=nMaiChongShu-1 else nMaiChongShu=nMaiChongShu+1 endIf wait(BianMaQi_A==false) nZhuanJiao=(360/2000)*nMaiChongShu 计算角度 endWhile 2、复位 nZA=0 while true wait(BianMaQi_Z==true) nZA=nMaiChongShu nMaiChongShu=0 脉冲数置零 print(nZA) 输出显示脉冲数 wait(BianMaQi_Z==false) endWhile