单圈绝对值编码器过零问题
- 2021-12-08 20:40:00
- 微图
- 原创 2240
参考思路:
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
发表评论