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

2021-12-08 20:40:00
微图
原创 2225


参考思路:

1.

首先判断<当前值>是否在前半圈。

    是前半圈,<上次值>是否在负半圈。

        是负半圈,正向过零加一。(在正半圈,没有发生过零)

    是后半圈,<上次值>是否在正半圈。

        是正半圈,反向过零加一。(在负半圈,没有发生过零)

名词解释:

前半圈,0到6点。

后半圈,6到12点。

正半圈,当前位置正向的半圈以内。

负半圈,当前位置反向的半圈以内。


可以这么跟你说。看程序更加不明白。几条加减几条比较指令根本看不出什么思路。

看你是要明白还是要程序了。要明白,我还可以跟你再研究研究。要程序的。我稍后上程序。


http://bbs.gongkong.com/d/201512/650837/650837_2.shtml


2.

编写程序----------开机初始化ON保存一次编码器数值,加上128,
编写程序----------编码器的当前采集值加上128,
两者作比较,则可以判断编码器的转向,
根据差值还能判断转了几圈了。

http://www.ymmfa.com/read-gktid-1424069.html


3.

用与最大值比较取相等的状态不可靠。由于扫描周期的原因,可能使数据采样错过计数值等于最大值的一刻。
可采取对当前扫描周期的当前值和上一周期的当前值进行比较。当两个值的差值的绝对值大于一个接近最大值的数时,认为编码器转过一圈。这样还可以判断编码器的旋转方向。如差值为负(由最大值跳转到0),则编码器正转;如差值为正(由0跳转到最大值),则编码器反转。

http://www.ad.siemens.com.cn/service/answer/solved_59657_1029.html

发表评论
评论通过审核后显示。
  • 在线客服
  • 关注微信
    • 客服帆帆
    • 客服娜娜
    • 客服美美
    • 客服龙龙
  • 扫一扫关注微信