以下为本人自学时摸索的简单原理,可能缺乏一些专业性,一些地方可能存在问题,仅供查考,如果可以请多多指教,麻烦指出告知。
此文主要针对编码器脉冲位置比对存在的一个简单问题进行探讨。此处的编码器相当于一个脉冲发生器,旋转一定角度,就产生一定数量的脉冲。编码值即获取到的脉冲数。
编码器脉冲距离获取,主要是对于前后两次或多次读取的编码脉冲值进行比较,从而获取相应物体运动的距离,目前已知应用在物体编码定位等方面。
编码器脉冲距离获取(假定两次获取),前后对同一物体获取编码值,当从原理上将我们第二次获取编码值必定大于第一次编码值,所以
编码距离 = 第二次编码值 – 第一次编码值
这个理论在理想上是成立的,成立的条件就是第二次获取值必定大于第一次获取编码值,而实际编码器计数是有最大值(这里可以理解为我们设定一个编程上的变量,它有能表示的最大值,超过了就会出bug,即我们不期望的情况),超过最大值应做对应处理。最小值同理。
当编码计数值达到最大值(预设定值)时,再次增加编码值变为0;
当编码计数值为零时,再次减少,编码值为最大值(预设定值)。

问题点:存在一种可能,当第一次取值接近缺不超过最大值,第二次取值可能会取到不大于第一次的值。这会导致理论上的公式不能使用。
解决方案:引入前后圈的概念,扩大可表示范围并标记。
分析:问题的发生主要是我们对于值超过最值后,都进行相应处理,形成一个轮回,如图一个圆圈。

所以,遇到上诉问题时,第一次取值可以看成在第一圈取到编码值,第二次取值看成第二圈取到编码值,公式为
编码距离 = 第二次编码值 + 编码器一圈值 – 第一次编码值
这样第二次编码值小于第一次编码值也可以获取出编码距离,当然如果是正常情况,直接套用原公式
编码距离 = 第二次编码值 – 第一次编码值
注意这里的编码器一圈值指代的不是硬件编码器上标注的走一圈编码值,而是软件上我们对于其编码计数变量预设定值,所谓圈的概念指的是轮回一次软件编码值。
接下来,是对于这个预设值进行探讨。
MAX:目前发现而言理论上,这个值没有最大值,而且值越大,对前后圈的需求会越低(指使用次数),实际上是根据记录编码值的变量决定,就比如编程上,设定存储编码值的变量是unsigned char型的,那他就不能超过unsigned char型的最大能表示的值,否则存在bug。

MIN:从图中也许大概能明白大概了。因为引入了前后圈的概念,所以能表示的最大距离就是两倍的编码器一圈值。所以理论上我们能设定的最小值就是两次取值之间间隔编码值的一半。(实际最好大一些,编码器会有一些波动)如果小于的话,就会需要引入第三圈的概念,在前后圈这里就无法判断,认为是第一圈(出现错误)。
扩展
不难发现,其实圈数不一定是两圈,也就是说前后圈的概念是局限的,应该是引入一个圈数的概念。知道第二次取到圈数以及对应当前编码值,我们不难得出编码值距离。公式为:
编码距离 = 第二次编码值 + 编码器一圈值 * 编码值圈数 – 第一次编码值
编码器一圈值的选取
MAX:根据具体存储空间设定。
MIN:大于(两次取值间隙/编码值圈数)。
选取前后圈原因:
1.首先根据需求,编码值两圈足够使用,建议优先,把编码器一圈值尽可能调到最大(略小与存储空间最大值)。
2.如果使用两圈以上,那么需要在算法中增加一个乘法的处理,相对效率下降(并没有多大下降)。
3.实际圈数也是一个存储变量,也是有最大值,所以建议也不要设置太多圈数。
谢谢阅读。
欢迎各位大牛指导。

关于编码器脉冲距离获取存在简单问题的处理方案相关推荐

  1. python怎么用for循环找出最大值_如何获取Python简单for循环索引

    如何获取Python简单for循环索引 这篇文章主要介绍了如何获取Python简单for循环索引,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Py ...

  2. python处理金融数据_Python之获取与简单处理金融数据

    Python的功能不可以说不大,在金融数据分析里面有着很方便的应用.本篇文章给大家分享的内容是Python之获取与简单处理金融数据,有着一定的参考价值,有需要的朋友可以参考一下 1.数据获取panda ...

  3. java阴阳师抽卡算法_阴阳师详解新的抽卡机制 全图鉴和SP获取更加简单

    原标题:阴阳师详解新的抽卡机制 全图鉴和SP获取更加简单 阴阳师随着大岳丸活动的临近,马上大家就要再次进入抽卡的热潮中了,而这次的新SSR大岳丸的获取,又一次更新了新的抽卡机制,本次就带来新抽卡机制详 ...

  4. MySql中实现 按经纬度搜索附近的人,并按距离排序的简单实现

    按经纬度搜索附近的人,并按距离排序的简单实现. 2016年05月31日 23:26:17 阅读数:7235 按经纬度搜索附近的人,并按距离排序的简单实现 这是一种简单的实现,数据量不大的情况下还是能满 ...

  5. 简单的群体测试方案C++代码(Group testing against Covid-19)

    原理参考链接 https://www.econstor.eu/handle/10419/221811 http://www.magigen.com/h-nd-348.html 文章原理回顾 文章比较了 ...

  6. 朵拉云提供最简单的免费虚拟化方案:Hyper-V Server + Windows Admin Center

    最简单的免费虚拟化方案:Hyper-V Server + Windows Admin Center 一机多用的同时,想要服务器尽可能的稳定.至于软硬件的选择就是另一个故事了,这里我们来谈谈虚拟化. 为 ...

  7. Android之简单改变按钮颜色方案

    前一段时间跟着大哥做项目,大哥让我给按钮背景添加颜色,然后点击变色,于是我就想到了button三态的变换方法,然而没有实现,反而出现了问题,今天就和大家说说,如何解决color设为背景颜色动态变色. ...

  8. android 方法调用,Android 简单的方法调用方案

    Method Bridge 一个简单的方法调用方案 特性 方法动态注册 跨对象.跨页面.跨线程等方法调用 添加依赖 配置仓库 allprojects { repositories { ... mave ...

  9. 一个简单粗暴的营销方案,让麻辣烫老店业绩增长40倍以上!

    今天给大家分享一个麻辣烫老店简单粗暴业绩增长40倍的操盘实录,就以第一人称来叙述了.这家原本生意寥寥的麻辣烫老店,只花了一个星期的时间,从原本一天一百多块钱的营业额,做到了每天四千多的进账.天天都人气 ...

最新文章

  1. 6.5 不同类型的数据集
  2. php模拟请求get请求,php模拟get请求方法总结
  3. LongFormer:用稀疏自注意力拓展模型文本容纳量
  4. 云服务器(Centos)部署SVN
  5. 减少HTTP请求的方法
  6. Python 字符串与二进制串的相互转换
  7. zip命令通过yum安装和使用方法
  8. mysql获取当前时间+1天_mysql获取当前时间,前一天,后一天
  9. 《智慧工地单点解析系列(一)—— 劳务实名制》
  10. 企业竞争力分析及综合评价体系的构建
  11. java识别音高_如何找出音乐的音高
  12. 如何在网站上设置在线QQ客服
  13. 如何用excel实现并列排序
  14. VM安装的虚拟机如何在局域网内互相访问
  15. 基于CAD纵断面图生成地质体模型
  16. 【MySQL】字符集utf8mb4无法存储表情踩坑记录
  17. 计算机打印机无法打印机驱动,打印机无法打印怎么办,教您打印机不能打印怎么解决...
  18. 【2020年第二届“网鼎杯”网络安全大赛 青龙组】Web AreUSerialz
  19. 时间序列数据、自协方差函数、自相关函数与平稳性
  20. Sentinel 限流使用案例

热门文章

  1. LVDS接口分类与数据格式
  2. Simulink建模与仿真学习笔记之真值表(Truth Table)
  3. 杨广悟道第一课:年月日时天干地支的计算方法
  4. Telegram与QQ消息互转
  5. 将小写数字转换为大写
  6. openmv图像识别
  7. 计算机 网络安全 研究生专业大学排名,2020年最好的网络空间安全专业大学排名...
  8. 一篇能看懂unicode的文章
  9. 《严凤英》这部电视剧与母亲
  10. 计算机学院元旦晚会主题名称,晚会主题口号