2020/7/26编码器的使用

这几天一直在解决编码器的问题。我想要将编码器的读值转化成我想要的精确速度。但是一直有问题,今天终于大概把所有问题给捋清了,但是还是会有一些问题,之后可能要不断修改。
我用的是512线程的编码器。轮子转动一圈会产生512个信号值。可以根据公式推导出速度。

车模轮子周长 X0
车模齿轮的齿数 X1
编码器齿轮的齿数 X2
编码器的线数 X3
ENC 读到数据 X4
ENC 读取时间间隔 X5

速度换算公式: V = ( (X4 / X3) * X2 / X1 ) * X0 / X5。

也就是:速度 = ( (总脉冲数 / 编码器线数) * 编码器齿数 / 车模齿数 ) * 轮周长 / 脉冲读取时间。

  1. 读取编码器的大致流程

    首先轮子不停转动,编码器的值会一直增加,之后进入中断,读取数值,立马将编码器的数值清除。这样就会不停采集5ms内(假定中断时间为5ms)的数值。

编码器存在的问题:我测了一下不同中断时间读出的数值。理想状态下中断时间和读出的数值应该是线性的关系。但是中断时间5ms和10ms不符合两倍的关系,中断时间过短会导致测量的不准确。中断时间长之后,其本上符合线性的关系,所以我选择了10ms测一次速度。

中断的问题:之前对中断的理解一直是错的,给我带来了很大的问题。中断5ms应该是从进入中断的那一刻开始计时,下一个5ms后进入中断。而不是等待中断函数执行完成之后再计时5ms。如果中断函数的时间超过5ms则会等待中断函数完成,之后的while(1)可能不会进去而直接又一次进入中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值