当前位置: 首页 > news >正文

游标码光电角度编码器原理教育八讲(一)

一、从游标卡尺说起游标卡尺有主尺和副尺主尺的49mm分成副尺的50格这样每格就是49/500.98mm对于副尺来说除了刚开始0刻线和最后结束50刻线的两根刻线是和主尺的刻线对齐之外副尺的第1根刻线的尺寸是0.98mm主尺的第1根刻线的尺寸是1mm两者相差1/500.02mm如果移动副尺让副尺的第一根刻线和主尺的第一根刻线对齐这个时候副尺就移动了0.02mm如果继续移动让第2刻线对齐那就是移动了0.04mm第49根刻线对齐就是移动了0.98mm。二、光电编码器的三件套码盘、LED光源、光电池是光电编码器的三个核心元器件码盘固定在转轴上LED光源发出的光照射到码盘的光栅上透射或反射的光照射在光电池上转轴每转过码盘上一个光栅的角度光电池就产生一个周期的正弦波和余弦波电压信号如下图所示LED光源和光电池在码盘的两侧光线透过码盘照射在光电池上称为透射式光电编码器。LED光源和光电池在码盘的同侧光线照射在码盘上再反射回来照射在光电池上称为反射式光电编码器。三、游标码原理转轴每转过码盘的一个光栅光电池就输出一个完整周期的正弦波和余弦波。通常码盘最外一圈轨道的光栅数量是512个每转过一个光栅就是360/5120.703125度。一个完整周期的正弦波和余弦波可以定义为360度(2π可以通过Cordic算法下一篇文章再详细讲解此算法或是查表法得到当前位置。如果计算的最小单位是度一个光栅就可以分成360份理论上通过Cordic算法可以把一个光栅分成任意想要的份数可以理解为在一光栅内均匀刻上等宽度的细线。通过Cordic算法或是查表法得到当前光栅内的位置还需要知道当前是第几个光栅才能计算出转轴的角度。为了确定当前是第几个光栅码盘上设置了3个轨道每个轨道的光栅数量是不同的。通常游标码原理的码盘设置了3个轨道从外往内定义为M、N、S码道常见的一款码盘其最外面的码道是512个光栅定义为M码道里面一个码道是510个光栅定义为N码道。这些光栅分成左右两个半圆对齐各是256个M光栅对齐255个N光栅。在同一个时刻转轴同 个角度对M光栅和N光栅的输出sin/cos信号进行采样根据采样的sin/cos信号进行Cordic计算将M光栅细分成255份N光栅细分成256份想像成在M光栅里均匀刻上255根细刻线N光栅里均匀刻上256根细刻线。这样M码道和N码道每个半圆就都细分成了256*25565280道细刻线255*25665280这些细刻线都是对齐的由于M码道的光栅比较窄一些所以同一个位置M码道Cordic计算出来的角度要大一些N码道Cordic计算出来的角度要小一些M码道的角度比N码道的角度大多少呢我们来计算一下M码道360/2551.4117647度N码道360/2561.40625度如果当前位置在第0个光栅M码道和N码道的细刻度线是对齐的假设是细刻度线是3 M码道和N码道的角度差1.4117647*3-1.40625*33*(1.4117647-1.40625)0.016544度在第0个光栅内细刻度线的最大数字是255所以在第0个光栅内M码道和N码道的角度差可能是0~255*(1.4117647-1.40625)0~1.406250~255*360/255-360/2560~255*360*256-255/255*256 0~255*360*/255*256 (0~1)*360/256在第1个光栅内M码道和N码道的角度差可能是(1~2)*360/256, 第i个光栅内M码道和N码道的角度差可能是(i~i1)*360/256这样我们根据M码道和N码道的Cordic角度差就能知道当前所处M码道的光栅序号了。这样看起来似乎我们只需N和M码道就可以计算出来具体的角度了那为什么还要再增加一个S码道呢上面的说法是纯理论的实际上做起来很可能由于LED的光量不太稳定每道光栅的刻度不太均匀如果第i个光栅和第i-1以及i1个光栅计算出来的相位差都是相同的i呢那我们就分不清楚到底是不是第i-1个光栅还是i1个光栅了如果不做进一步的判断修正硬要按i-1或是i1光栅来计算计算出来的角度就会产生一个光栅的角度误差因此我们需要再增加一个S码道来做进一步的判断以修正此误差。256个M码道对齐255个N码道再对齐240个S码道所以对于M码道和S码道来说是16个M码道对齐15个S码道这里我们把每16个M码道称为1组一共是16组因此按照同样的角度差计算方法使用M码道和S码道的角度差我们可以区分出来当前光栅是16个M码道中的第j个光栅但是我们无法区分出来是第几组。但是结合M码道和N码道的角度差我们可以得出当前M码道是第i个光栅只是这个i偶尔有点误差如果i/16取整数就等于把M码道按照16个光栅一组来进行分组i/16取整数就能知道当前光栅是第几组M码道和S码道的角度差又能知道是这组中的第几个光栅那我们就能确切知道当前是第几个光栅了然后再对光栅内的位置进行Cordic计算我们就能得到当前位置的精确角度了。MNS三个码道形成2把游标卡尺利用游标码原理经过计算就能知道当前位置但是由于左右2个半圆是完全对等的因此还需要区分转轴当前的位置是左半圆还是右半圆需要使用另外的方法来判断是属于左半圆还是右半圆。一种方法是在码盘上增加MTA和MTB信号下图的中间两个码道理论上只要有一个MTA或是MTB信号就可以区分是左半圆还是右半圆了使用2个信号MTAMTB的原因一是需要修正误差二是进行多圈计数时需要区分是正转还是反转这个在第三讲多圈计数里面再来做详细说明。
http://www.gsyq.cn/news/1396412.html

相关文章:

  • 【算法分析与设计】第9篇:平摊分析与聚合核算技术
  • 藜麦片哪个品牌好
  • 2026年办公室设计厂家推荐排行榜:集团、企业、工厂、产业园办公室,简约风设计优质公司! - 资讯速览
  • 使用TaotokenCLI工具一键配置团队开发环境中的AI模型密钥
  • SQL 日期处理指南
  • MySQL 多表查询完全指南:JOIN 与子查询
  • VAE赋能MMSE估计:从含噪数据中学习最优先验的通用框架
  • 实战机房设备搬迁
  • 在 Node.js 后端服务中异步调用 Taotoken 聚合 API 的最佳实践
  • 2026年5月大同地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • OpenAI 大重组与 IPO 冲刺:全面解析
  • 2026 年办公楼装修设计公司推荐榜:整栋、集团、工厂、产业园办公楼装修优质公司 - 资讯速览
  • 自治系统失控:从故障模式到抗错设计的工程实践
  • Linux面试题:端口占用和进程查看
  • Wireshark深度流量分析实战:从协议解析到根因定位
  • 信息学奥赛解题精讲:从OpenJudge NOI 1.9 08题看数组极值与统计处理
  • 独立开发者如何用Laravel+pgvector构建多模型AI助手SaaS平台
  • LLM+RAG+TRIZ:构建面向可持续发展的智能产品创新引擎
  • 多跳通信系统硬件缺陷建模与联合抑制技术
  • 别再死记硬背公式了!用Python手把手带你实现Model-based强化学习(附值迭代/策略迭代代码)
  • 手把手教你用Python复现FBCNet:一个融合FBCSP与CNN的脑电解码模型(附完整代码)
  • java实现ofd文件转pdf文件
  • 别再傻傻短接了!荣品RK3399刷机,一个USB BOOT键就能搞定Ubuntu系统
  • 手把手教你定制一个“会自己干活”的智能PE:集成Wget和自动安装脚本
  • 外卖微信小程序京东拼多多外卖cps|外卖红包优惠券源码美团饿了么红包的技术要点
  • 5分钟解锁游戏新体验:BepInEx插件框架让你轻松打造专属游戏模组
  • SAP物料账差异分摊翻车实录:CKMLCP跑完后余额不为0,我踩了这5个坑
  • 2026年电竞椅哪家靠谱:拓际TGIF安全可靠 - 17329971652
  • Corrosion2靶机实战:从HTTP指纹到systemd timer提权全链路解析
  • 5分钟解锁VdhCoApp:浏览器视频下载的本地增强神器