我用一个欧姆龙的增量式旋转编码器作为旋转台的角度测量,编码器为2000P/r,安装在减速电机的输出轴,旋转台转速为 0~5转/分钟。我编写了程序将编码器的A脉冲信号转换为角度,B信号为方向,Z信号为零位。现在遇到一个问题就是当电机频繁开停时,会造成角度测量误差,且均为正误差。编码器自身没问题,也不存在干扰,经检查发现旋转台在停止的瞬间,会有一个轻微的摆动,这就导致某一位置的脉冲重复累计,造成角度误差,严重时每转会多出几十个脉冲。请教一下,如何通过合理的程序解决这个问题。谢谢了!
-
引用 wangchen 2016/8/6 22:08:18 发表于2楼的内容
-
引用 swy 2016/8/8 16:24:49 发表于3楼的内容
-
-
atmupkeep 发表于 2016/8/9 14:47:49
看了你的问题,你好象对编码器不是很明白,A相和B相是互差90度的脉冲,你的程序中可能只用了A相,这样不管正转,反转,抖动,你的角度都会增加,你应当A,B相都用,用加减计数模式,怎么转都不会有误差4楼 回复本楼
引用 atmupkeep 2016/8/9 14:47:49 发表于4楼的内容
-
-
-
zhangmengmeng | 当前状态:在线
总积分:1958 2024年可用积分:2
注册时间: 2013-12-26
最后登录时间: 2023-08-14
-
zhangmengmeng 发表于 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) endWhile5楼 回复本楼
引用 zhangmengmeng 2016/8/10 15:07:16 发表于5楼的内容
-