揭秘格雷码:为什么旋转编码器都用它?

EDN电子技术设计 20260326

  • 旋转编码器
  • 工业控制
  • 电子器件

格雷码(Gray codes),又称反射二进制码(Reflected Binary Code,RBC),是一种设计巧妙的编码方式,可有效降低数字信号在状态转换时的错误。通过确保每次只改变一位,它不仅简化了硬件设计,也在从旋转编码器到错误纠错等各种应用中减少了歧义与瞬态错误。

本文将回顾格雷码的基本原理,并提供工程师在实际电路设计中可应用的实用技巧。

理解反射二进制(格雷)码

反射二进制码由于其发明者为Frank Gray而被称为格雷码,是一种系统化排列的二进制数序列。其设计核心在于每一个后续数值仅与前一个数值在单一位上不同。这一特性,使格雷码与传统二进制序列明显不同,后者在状态转换时可能同时翻转多个位,这增加了错误与歧义的风险。

以十进制数值1与2为例:在标准二进制表示中,它们分别为001与010,从一个数值递增到另一个数值需翻转两个位。然而在格雷码中,这两个数值分别表示为001与011,确保每次递增仅改变一个位。这看似微小的设计调整,对实际应用却影响巨大:它能减少状态变化中的歧义,降低误判的风险。

长期以来,格雷码在工程实践中受到高度重视。它能抑制机电开关中因多位同时翻转而产生的瞬态错误;在现代数字通信系统中,也可降低传输错误。通过简化逻辑运算并限制每次转换仅改变单个位,格雷码为可靠的数字设计提供了坚实的基础。

格雷码与自然二进制代码的比较

与标准二进制编码不同,标准二进制编码在数值递增过程中可能改变多个位,而格雷码确保连续两个值之间只有一位发生翻转。这种单个位转换最大限度地减少了状态变化时的歧义,并实现了简单的错误检测:如果多个位意外改变,系统可以将数据标记为无效。

这一特性对位置编码器和数字控制系统尤为重要。多位同时改变可能引起瞬态错误,导致控制器误判位置。下图比较了自然二进制与格雷码序列的递增过程,凸显了格雷码如何保持单个位变化,确保稳定性。

图1:表格比较格雷码与自然二进制序列,突显每次递增的单个位转换。

在绝对编码器输出可靠性方面,格雷码为首选,因其可避免自然二进制在状态转换期间可能引发的数据错误。例如,从0011到0100的自然二进制转换,如果多个位同时翻转,可能短暂显示为0111。格雷码通过确保每次仅改变一个位来避免这个问题,从而使输出流更加可靠,也更便于控制器在实际应用中进行验证。

此外,将格雷码转回自然二进制简单快速,即使在纸上也能完成。方法如下:

  1. 将格雷码序列写下,复制最左边的位到下方。

  2. 将该复制位与右侧下一格雷码位进行XOR (忽略进位),将结果置于复制位旁。

  3. 依序进行,直至序列全部转换完成,最终行即为自然二进制值。

举例:格雷码1011

  • 复制最左边位 → 二进制开始为1

  • 1 XOR 0 = 1 → 二进制变为11

  • 1 XOR 1 = 0 → 二进制变为110

  • 0 XOR 1 = 1 → 二进制变为1101

图2:表格展示格雷码1011逐步转换为自然二进制1101的过程。

格雷码在旋转编码器中的输出

格雷码编码器的核心差异在于输出方式。与直接反映转子位置的二进制数不同,格雷码编码器输出非加权码,确保每个相邻状态仅一位改变。

相比之下,自然二进制在递增或递减时,往往需多位同时翻转,易造成歧义,甚至引起控制器误判位置,导致系统响应错误。格雷码通过单个位变化,降低了这类风险,确保了状态检测更可靠。

图3展示了4位格雷码输出旋转编码器。它包含四个输出端子(1、2、4、8)与一个公共端。1-2-4-8表示4位码位位置,每个端子对应编码器一条输出线。随转子旋转,每条线依格雷码序列在高低电平切换,为每个位置生成独特的4位模式。

图3:数据片段展示25LB22-G-Z 4位格雷码编码器端子编号。(来源:Grayhill)

公共端子提供参考连接,通常为地或电源回路,用于测量四个输出信号。这些端子共同生成完整格雷码输出,控制器或逻辑电路可据此判断编码器角度位置。

附注:十六进制输出编码器

部分旋转编码器设计为输出十六进制信号,将4位二进制字直接映像为十六进制(0–F)。此方式方便与已使用十六进制处理数据的数字系统整合,如微控制器或诊断接口。

不同于格雷码,十六进制输出不保证单个位转换,因此在机械切换期间更易产生歧义。但在追求紧凑表示与解码简单的应用中,即使牺牲部分转换可靠性,仍具有实用价值。

控制器对格雷码的解码

格雷码可通过多种方式解码,但最常见方法是将输出位送入微控制器,由软件处理计数。程序通过I/O端口读取旋转编码器信号,先将格雷码转换为二进制值,再转换为二进制编码十进制(BCD),方便驱动数字显示器。

微控制器可据此更新七段数码管、LCD或其他接口,清楚呈现转子位置。软件化方法不仅简化了硬件设计,还具灵活性,可支持高分辨率编码器或额外处理功能。 

个人经验分享:我最初对格雷码编码器的实验,是以硬件逻辑电路而非软件解码。

本文旨在揭开格雷码的神秘面纱,为工程师提供一些背景信息和清晰的解释。未来仍有更多深入探讨空间,欢迎读者在评论区分享经验、见解或问题,促进更深入的讨论与技术交流。

责编:Ricardo

查看全文

点赞

EDN电子技术设计

作者最近更新

  • 揭秘格雷码:为什么旋转编码器都用它?
    EDN电子技术设计
    5天前
  • 加速度传感器的工作原理
    EDN电子技术设计
    2025-06-19
  • 如何使用电位器调节光的亮度
    EDN电子技术设计
    2024-06-22

期刊订阅

相关推荐

  • 矿业巨头扩大自动驾驶卡车车队:为卡车安装自主牵引系统

    2018-12-07

  • 世界在建最大水电站埋设有成千上万的传感器

    2018-12-09

  • 我国传感器生产销售现状及未来发展空间展望

    2018-12-09

  • 传感器技术在科技创新背景下资源革命中的应用

    2018-12-18

评论0条评论

    ×
    私信给EDN电子技术设计

    点击打开传感搜小程序 - 速览海量产品,精准对接供需

    • 收藏

    • 评论

    • 点赞

    • 分享

    收藏文章×

    已选择0个收藏夹

    新建收藏夹
    完成
    创建收藏夹 ×
    取消 保存

    1.点击右上角

    2.分享到“朋友圈”或“发送给好友”

    ×

    微信扫一扫,分享到朋友圈

    推荐使用浏览器内置分享功能

    ×

    关注微信订阅号

    关注微信订阅号,了解更多传感器动态

  • #{faceHtml}

    #{user_name}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 查看评论 回复

    共#{comment_count}条评论

    加载更多

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} #{reback} 回复

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 回复

  • 关闭
    广告