打印

EC11编码器基于运算解码的算法

[复制链接]
2003|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
beacherblack|  楼主 | 2024-2-18 21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
char Encoder_EC11_Scan()     /*  这里只是部分代码  */
{
//以下储存A、B上一次值的变量声明为静态全局变量,方便对EC11对应的IO口做初始化
//  static char EC11_A_Last = 0;
//  static char EC11_B_Last = 0;
    char ScanResult = 0;    //返回编码器扫描结果,用于分析编码器的动作
                            //返回值的取值:   0:无动作;      1:正转;           -1:反转;  
                            //                  2:只按下按键;    3:按着按键正转;   -3:按着按键反转

                            //======================================================//
    if(EC11_Type == 0)      //================一定位对应一脉冲的EC11================//
    {                       //======================================================//
        if(EC11_A_Now != EC11_A_Last)   //以A为时钟,B为数据。正转时AB反相,反转时AB同相
        {
            if(EC11_A_Now == 0)
            {
                if(EC11_B_Now ==1)      //只需要采集A的上升沿或下降沿的任意一个状态,若A下降沿时B为1,正转                    
                    ScanResult = 1;     //正转

                else                    //反转
                    ScanResult = -1;
            }
            EC11_A_Last = EC11_A_Now;   //更新编码器上一个状态暂存变量
            EC11_B_Last = EC11_B_Now;   //更新编码器上一个状态暂存变量
        }
    }
return ScanResult;      //返回值的取值:   0:无动作;      1:正转;           -1:反转;
}


使用特权

评论回复
沙发
tpgf| | 2024-3-4 16:53 | 只看该作者
看代码感觉这个解码的算法真是非常简单

使用特权

评论回复
板凳
dspmana| | 2024-3-6 07:24 | 只看该作者
计算脉冲序列时,需要考虑信号的采样时间。如果采样时间太长,可能会错过一些脉冲;如果采样时间太短,可能会将噪声误认为是脉冲。

使用特权

评论回复
地板
晓伍| | 2024-3-6 18:08 | 只看该作者
在进行编码的时候使用的是什么算法呢

使用特权

评论回复
5
八层楼| | 2024-3-6 18:42 | 只看该作者
请问他只支持这一种解码的算法吗?

使用特权

评论回复
6
观海| | 2024-3-6 19:16 | 只看该作者
看代码好像只是进行了0和非0的判断啊

使用特权

评论回复
7
guanjiaer| | 2024-3-6 19:50 | 只看该作者
楼主是否可以贴一下编码部分的代码呢

使用特权

评论回复
8
heimaojingzhang| | 2024-3-6 20:24 | 只看该作者
这个就是简单的分辨一下标识位就可以了

使用特权

评论回复
9
mikewalpole| | 2024-3-7 11:56 | 只看该作者
需要对编码器输出的脉冲进行准确计数。可以使用硬件计数器或软件计数器实现。确保计数器在编码器旋转过程中能够正确捕捉到所有脉冲。

使用特权

评论回复
10
backlugin| | 2024-3-7 13:22 | 只看该作者
运算解码算法应该能够处理可能出现的错误,例如数据丢失、数据错误等。适当的错误处理机制可以确保系统在遇到问题时能够稳定地运行。

使用特权

评论回复
11
kkzz| | 2024-3-7 21:33 | 只看该作者
对于增量型编码器,在系统启动或复位时需要确定一个初始零点或原点位置。这通常通过检测Z相索引脉冲实现,或者在特定机械位置时通过软件设置偏置值来初始化。

使用特权

评论回复
12
backlugin| | 2024-3-7 23:43 | 只看该作者
编码器输出信号可能存在噪声,需要进行滤波处理以提高信号质量。可以使用硬件滤波器或软件滤波算法实现。

使用特权

评论回复
13
modesty3jonah| | 2024-3-8 21:24 | 只看该作者
实际应用中,编码器的输出可能会因机械振动等因素产生微小跳变,即所谓的“抖动”。算法中应加入适当的防抖措施,比如延时确认或两次比较确认同一方向的变化。

使用特权

评论回复
14
timfordlare| | 2024-3-9 18:57 | 只看该作者
考虑到编码器输出的电信号可能存在噪声干扰,所以在设计解码算法时需要对输入信号进行滤波处理,例如采用R/C滤波电路来减少电气噪声,确保准确捕捉到有效的脉冲边沿。

使用特权

评论回复
15
lihuami| | 2024-3-9 21:58 | 只看该作者
在处理编码器的输出信号时,需要注意一些边缘情况。例如,当编码器旋转速度很快时,可能会出现脉冲丢失或计数错误。在算法设计时,需要考虑这些情况并采取适当的处理措施。

使用特权

评论回复
16
olivem55arlowe| | 2024-3-10 08:04 | 只看该作者
使用基于运算解码的算法之前,需要对编码器进行校准。这通常涉及到调整算法中的某些参数,以使算法的输出与实际的位置或速度相匹配。

使用特权

评论回复
17
gygp| | 2024-3-10 15:27 | 只看该作者
不断优化编码算法的性能,包括提高编码速度、降低错误率、减少计算复杂度等。

使用特权

评论回复
18
uiint| | 2024-3-10 23:01 | 只看该作者
在解码过程中,可能会出现脉冲漏计、重复计数等误差。需要设计相应的误差处理机制,以确保解码结果的准确性。

使用特权

评论回复
19
gygp| | 2024-3-11 13:21 | 只看该作者
EC11编码器输出A、B两路相位差90度的方波信号。正转时,A相超前B相;反转时,B相超前A相。在解码过程中,需要正确识别这两个信号的相位关系,以确定旋转方向和角度。

使用特权

评论回复
20
jonas222| | 2024-3-11 15:15 | 只看该作者
如果EC11编码器用于安全相关的应用,那么算法的安全性也需要考虑。确保算法能够抵抗潜在的攻击或欺诈行为是非常重要的。

使用特权

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

本版积分规则

12

主题

1059

帖子

1

粉丝