发新帖我要提问
12
返回列表
打印

如何快速简单的去判断旋转(按钮)编码器EC11的正反转情况?

[复制链接]
楼主: medety
手机看帖
扫描二维码
随时随地手机跟帖
21
medety|  楼主 | 2023-10-26 11:43 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 medety 于 2023-10-26 11:44 编辑

CHA           CHB           STATE
--------------------------------------
  1               0                1
-------------------------------------
  1               1                2
--------------------------------------
  0               1                3
-------------------------------------
  0               0                4

您的意思:初始状态有可能是1也有可能是2,或者3,4?
意思只要是1->2->3->4->1这种循环方式,就是正转,反之就是反转?
根据当前的A和B之间的电平去判断当前的STATE是表中1、2、3、4的哪个位置。
然后通过出现的状态顺序来判断是正还是反?

2.另外有没有1、3、2、4这种组合呢?这种怎么用程序去过滤掉?还是程序里面必须按这种1->2->3->4->1和4->3->2->1->4这2个状态更新才是可以的,其他的方式不无法进去到处理函数中?

使用特权

评论回复
22
zlf1208| | 2023-10-26 11:52 | 只看该作者
本帖最后由 zlf1208 于 2023-10-26 12:20 编辑
medety 发表于 2023-10-26 11:43
CHA           CHB           STATE
--------------------------------------
  1               0         ...

第一个问题:
1. 初始状态有可能是1也有可能是2,或者3,4?     是的
2. 只要是1->2->3->4->1这种循环方式,就是正转,反之就是反转?    是的
3. 根据当前的A和B之间的电平去判断当前的STATE是表中1、2、3、4的哪个位置。   以上一次的AB值为依据(这就是为什么将上一次AB值作为switch变量的原因),通过状态转换表确定旋转方向(每一个case只需判断上下二个相邻的状态即可)

第二个问题
不应该有这样的状态,如果有,一定是出错了或者受干扰了,这时候计数会出差错,程序不会死机。所以要注意AB信号的滤波。

使用特权

评论回复
23
medety|  楼主 | 2023-10-26 13:52 | 只看该作者
zlf1208 发表于 2023-10-26 11:52
第一个问题:
1. 初始状态有可能是1也有可能是2,或者3,4?     是的
2. 只要是1->2->3->4->1这种循环方 ...

我现在明白了,如何判断,但是个人感觉这个计数有何用?
为什么要计数?
计数是判断旋转了多少?
我的意思,知道目前是正转还是反转就好了。

使用特权

评论回复
24
zlf1208| | 2023-10-26 14:06 | 只看该作者
medety 发表于 2023-10-26 13:52
我现在明白了,如何判断,但是个人感觉这个计数有何用?
为什么要计数?
计数是判断旋转了多少?

要不要计数是看你的需要的,不是必须的。

使用特权

评论回复
25
datouyuan| | 2023-10-27 08:27 | 只看该作者
用外中断是最可靠,最简单的。
建议分析下这几个个链接:
http://www.51hei.com/bbs/dpj-221719-1.html
https://bbs.21ic.com/icview-3325360-5-1.html

前面的讨论都没有考虑消抖、丢步等问题。

使用特权

评论回复
26
medety|  楼主 | 2023-10-27 17:14 | 只看该作者
datouyuan 发表于 2023-10-27 08:27
用外中断是最可靠,最简单的。
建议分析下这几个个链接:
http://www.51hei.com/bbs/dpj-221719-1.html

怎么样子 才是考虑到了消斗,丢步?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则