揭秘格雷码:为什么旋转编码器都用它?
格雷码(Gray codes),又称反射二进制码(Reflected Binary Code,RBC),是一种设计巧妙的编码方式,可有效降低数字信号在状态转换时的错误。通过确保每次只改变一位,它不仅简化了硬件设计,也在从旋转编码器到错误纠错等各种应用中减少了歧义与瞬态错误。
本文将回顾格雷码的基本原理,并提供工程师在实际电路设计中可应用的实用技巧。
理解反射二进制(格雷)码
反射二进制码由于其发明者为Frank Gray而被称为格雷码,是一种系统化排列的二进制数序列。其设计核心在于每一个后续数值仅与前一个数值在单一位上不同。这一特性,使格雷码与传统二进制序列明显不同,后者在状态转换时可能同时翻转多个位,这增加了错误与歧义的风险。
以十进制数值1与2为例:在标准二进制表示中,它们分别为001与010,从一个数值递增到另一个数值需翻转两个位。然而在格雷码中,这两个数值分别表示为001与011,确保每次递增仅改变一个位。这看似微小的设计调整,对实际应用却影响巨大:它能减少状态变化中的歧义,降低误判的风险。
长期以来,格雷码在工程实践中受到高度重视。它能抑制机电开关中因多位同时翻转而产生的瞬态错误;在现代数字通信系统中,也可降低传输错误。通过简化逻辑运算并限制每次转换仅改变单个位,格雷码为可靠的数字设计提供了坚实的基础。
格雷码与自然二进制代码的比较
与标准二进制编码不同,标准二进制编码在数值递增过程中可能改变多个位,而格雷码确保连续两个值之间只有一位发生翻转。这种单个位转换最大限度地减少了状态变化时的歧义,并实现了简单的错误检测:如果多个位意外改变,系统可以将数据标记为无效。
这一特性对位置编码器和数字控制系统尤为重要。多位同时改变可能引起瞬态错误,导致控制器误判位置。下图比较了自然二进制与格雷码序列的递增过程,凸显了格雷码如何保持单个位变化,确保稳定性。
图1:表格比较格雷码与自然二进制序列,突显每次递增的单个位转换。
在绝对编码器输出可靠性方面,格雷码为首选,因其可避免自然二进制在状态转换期间可能引发的数据错误。例如,从0011到0100的自然二进制转换,如果多个位同时翻转,可能短暂显示为0111。格雷码通过确保每次仅改变一个位来避免这个问题,从而使输出流更加可靠,也更便于控制器在实际应用中进行验证。
此外,将格雷码转回自然二进制简单快速,即使在纸上也能完成。方法如下:
将格雷码序列写下,复制最左边的位到下方。
将该复制位与右侧下一格雷码位进行XOR (忽略进位),将结果置于复制位旁。
依序进行,直至序列全部转换完成,最终行即为自然二进制值。
举例:格雷码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电子技术设计
2025-06-19 -
如何使用电位器调节光的亮度EDN电子技术设计
2024-06-22



评论0条评论