打印
[疑难问答]

EC11旋转编码器的单片机驱动代码

[复制链接]
411|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
uptown|  楼主 | 2023-7-14 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 if(!PinA && PinA_O && PinB) {
                Now++;
            }PinA_O = PinA;               
            if(!PinB && PinB_O && PinA) {
                Now--;
            }PinB_O = PinB;     



只有六行代碼就能用EC11對Now進行加減操作

为什么这样写呢?
上时序图
顺时针转:


逆时针转:


我们看到,当顺时针转时
Pin A会早于Pin B 转低电平,反之亦然

代码解读:
!PinA && PinA_O && PinB//当Pin A 为低电平而之前为高电平(即下降沿)并且Pin B为高电平
这一句就捕捉到顺时针转时序图中箭指着的那一刹那的情况
于是Now加1

!PinB && PinB_O && PinA//当Pin B 为低电平而之前为高电平(即下降沿)并且Pin A为高电平
这一句就捕捉到逆时针转时序图中箭指着的那一刹那的情况
于是Now减1



如果编码器不加电容消抖
就用软件消抖
 if(ScanCount++ > 50) {        //其数值按单片机速度加减
            ScanCount = 0;
            if(PinA && !PinA_O && PinB) {
                Now++;
            }PinA_O = PinA;               
            if(PinB && !PinB_O && PinA) {
                Now--;
            }PinB_O = PinB;                        
            Now>9? Now = 0:_nop_();
            Now<0? Now = 9:_nop_();
        }




现附上小应用实例一则
基如STC15F104E的EC11软串口六位密码检查程序
如发现顺逆时针相反,对调PinA/PinB 定义脚即可

使用特权

评论回复
沙发
Pretext| | 2023-7-21 11:35 | 只看该作者
旋转编码器,就类似电机编码器呗。

使用特权

评论回复
板凳
V853| | 2023-7-21 11:35 | 只看该作者
用定时器监测编码器更好

使用特权

评论回复
地板
软核硬核| | 2023-7-21 11:36 | 只看该作者
这个编码器的波形和其他编码器还不太一样。

使用特权

评论回复
5
OKAKAKO| | 2023-7-21 17:36 | 只看该作者
旋转编码器的输出形式跟其他的形式一样嘛?

使用特权

评论回复
6
中国龙芯CDX| | 2023-7-24 13:14 | 只看该作者
楼主不用电容消抖的话就得有软件消抖

使用特权

评论回复
7
小夏天的大西瓜| | 2023-7-25 12:46 | 只看该作者
旋转编码器是用来测量转速并配合PWM技术可以实现快速调速的装置,光电式旋转编码器通过光电转换,可将输出轴的角位移、角速度等机械量转换成相应的电脉冲以数字量输出(REP)

使用特权

评论回复
8
LOVEEVER| | 2023-7-26 17:46 | 只看该作者
EC11旋转编码器的硬件参数有嘛?

使用特权

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

本版积分规则

31

主题

3295

帖子

2

粉丝