单圈绝对值编码器过零问题

更新时间:2023-10-08 10:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单圈绝对值编码器过零问题

电机带减速机,减速机轴上有8位单圈绝对值编码器,用来测位移。编码器采集格雷码,已经转化为2进制码了。可是由于这是单圈编码器,过零时,没有圈数的采集。各位大侠有没有什么思路,怎么在程序里计算编码器已经转了几圈? 问题补充:

绿野008,你好,刚才你说的1次计数,2次计数。。。,我明白,但是电机有正反转,假设正转时,计数到了10次,然后此时电机开始反转,此时计数值还在增加,这样位移不是不好判断了吗

悬赏分:20 | 解决时间:2010-10-25 10:28:47 | 提问者:ffln - 初级技术员 第5级问题ID:59657 最佳答案

用与最大值比较取相等的状态不可靠。由于扫描周期的原因,可能使数据采样错过计数值等于最大值的一刻。

可采取对当前扫描周期的当前值和上一周期的当前值进行比较。当两个值的差值的绝对值大于一个接近最大值的数时,认为编码器转过一圈。这样还可以判断编码器的旋转方向。如差值为负(由最大值跳转到0),则编码器正转;如差值为正(由0跳转到最大值),则编码器反转。

回答者: 寒音 - 中级工程师 第10级 2010-10-20 16:45:00

我要评论

提问者对于答案的评价: 就是按照你说的做的,谢谢 你觉得最佳答案好不好? 很好 不好 100% (1)0% (0) 其他答案

首先确定复位位置(起点位置或终点位置);

制作比较器设定比较器的最大值是编码器的当前值;

使用编码器的当前值与最大值比较等于一次计数1,等于两次计数2......,直至到复位位置清零;(或当编码器的当前值最小时计数)

计数值就是圈数,计数值乘以编码器的最大值加上当前计数值就是当前位置。

回答者: 绿野008 - 初级技术员 第5级 2010-10-20 10:57:35

我认为反转时可以将计数器进行减数处理啊,加上电机的反转信号,应该可以吧

回答者: lyxqhx - 资深学长 第3级 2010-10-20 14:35:02

你已经转换为2进码了,那下面的问题就好说了。 首先将你采集到 的编码器值存入在下面的变量(#ANGLE_STEP_CONT_DUAL )中。 下面的340和170分别对应二进码为101010100和10101010. 只要判断这两个值的先后顺序就能知道编码器的方向了。下面是一段程序,是成功的案例。已经注释好了,应该能看懂的。

不过只是一部分,如果你想要全部的话可以加我QQ群158098085.

L 3.400000e+002

L #ANGLE_STEP_CONT_DUAL //当前编码器值(已经换算成2进)

= #MORE_340 //value > 340,当前扫描的结果 L 1.700000e+002

= #LESS_170 //value < 170,当前扫描的结果

ON #LESS_170 //value < 170 ON #MORE_340_STORED //上一次扫描的结果暂存 JC B003

L #TURN_COUNTER1 L 1.000000e+000

+R //increment turning counter T #TURN_COUNTER1

B003: ON #MORE_340 //value > 340 ON #LESS_170_STORED //上一次扫描的结果暂存 JC A003

L #TURN_COUNTER1 L 1.000000e+000

-R //decrement turning counter T #TURN_COUNTER1

A003: A #MORE_340 //make impuls = #MORE_340_STORED A #LESS_170

= #LESS_170_STORED C003: NOP 0

回答者: 好想学哦 - 初级技术员 第5级好想学哦,回答的对

回答者: wqhhjjy - 初级工程师 第9级

2010-10-20 19:10:17

2010-10-20 20:48:58

本文来源:https://www.bwwdw.com/article/r0yf.html

Top