想象你深夜抵达一座陌生城市,酒店前台塞给你两样东西:一个计步器和一份门牌号对照表。计步器告诉你“从酒店出发后我走了多少步”——只要没人碰它、你也没打盹,你随时能说出自己离出发点多远;可一旦它被清零,你就彻底迷失。门牌号则不同,每栋楼都挂着独一无二的号码,无论你何时睁眼,抬头看一眼门牌,就能瞬间报出“我此刻就在 7 号门前”。机器人关节也面临同样的困境:它想稳稳地抓起一杯咖啡、精准地拧上一颗螺丝,首先必须回答两个问题——“我转了多少?”和“我现在在哪?”。编码器(Encoder)就是机器人的“计步器”和“门牌号阅读器”,它把转轴的转动翻译成控制器能读懂的脉冲或数字码。增量编码器像计步器,负责测量相对位移;绝对编码器像门牌号,每个位置都有唯一编码。这篇文章会从光电与磁电两种“感知方式”讲起,拆解增量与绝对的原理、信号细分与误差处理,最后落到机器人选型与调试上。

岗位关联

对 AI 从业者而言,编码器是机器人感知世界的“第一公里”:读懂它是驾驭运动控制、定位导航与自动化落地的基础,也是调试机器人与选型时不被数据表象迷惑的关键能力。

目录
  1. 可视化演示
  2. 编码器概述
  3. 光电编码原理
  4. 磁性编码原理
  5. 增量编码器
  6. 绝对编码器
  7. 信号细分与误差
  8. 选型与应用
  9. 调试与维护
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

交互展示增量编码器和绝对编码器的工作原理、信号特征和性能对比,理解位置检测与运动控制的核心传感器

本节配有交互动效(进入视口后自动加载,约 3KB)。

增量编码器 旋转产生脉冲信号 计数器记录位置变化 相对测量需参考点,断电丢失位置

编码器概述

想象你在深夜的陌生城市里徒步:手里只有计步器时,你能说出“离开酒店 1327 步”,却说不清自己在哪条街;手里拿着门牌号对照表时,你随时抬头就能报出精确地址。机器人关节控制器面临同样的困惑——它要驱动机械臂去抓取货架上的杯子,第一件事就是知道“关节转到了哪个角度,转得有多快”。编码器就是解决这个问题的“感官器官”:它安装在电机尾部或关节转轴处,把看不见的旋转运动翻译成电信号或者数字码,让控制器“心里有数”。

从结构上讲,编码器可以按照两个维度分类。按检测原理,分为光电编码器(用光“看”码盘)和磁电编码器(用磁场“感受”磁极);按输出方式,分为增量编码器和绝对编码器。增量式回答“我从基准点走了多少步”,绝对式回答“我现在站在哪个门牌号前”。无论哪种,核心评价指标都是分辨率——也就是能分辨的最小角度。

分辨率直接决定了机器人定位的精细程度。假如一个码盘每转发出 N 个脉冲,那么每个脉冲对应的角度就是一圈均分的结果:

理解了“计步器”和“门牌号”这两个角色,接下来就要看它们各自是用什么“感官”来感知世界——光电是拿眼睛看,磁电是拿指南针感。

R=360∘NR = \frac{360^\circ}{N}
这个公式告诉我们:每转脉冲数越多,每个脉冲代表的角度越小,编码器就越“眼尖”。
  1. R(角度分辨率)编码器每输出一个脉冲,对应转过的角度,单位是度/脉冲。它决定了关节“能感知的最小转角”。
    RR
  2. 360°(整圈角度)码盘转一整圈对应的圆心角,是所有角度计算的基准。
    360∘360^\circ
  3. N(每转线数/脉冲数)码盘一圈刻有的刻线数量,也就是每转产生的脉冲数。N 越大,除法结果越小,分辨率越高。
    NN
  4. 相除运算把一整圈的角度均匀分给 N 个脉冲,得到“每走一格转了多少度”。
    360∘N\frac{360^\circ}{N}

光电编码原理

想象你在夜晚拿着手电筒照一扇百叶窗:光线穿过每一条缝隙时,对面墙上就闪一下亮斑;转到窗页遮光的位置,亮斑就消失。光电编码器就是这套装置的工程化版本——手电筒是光源,百叶窗是码盘,对面墙上的观察者则换成一个光敏元件。

码盘是一块随转轴一起旋转的圆盘,上面刻有密集的透光缝隙。光源固定在码盘一侧,光电接收管固定在另一侧。当码盘转动时,缝隙与不透光的挡板交替经过光路,接收管感受到的光强就变成一串“明—暗—明—暗”的变化。这个光强变化经整形电路处理后,就变成控制器熟悉的方波脉冲。脉冲的个数对应转过的角度,脉冲的频率对应转速。

光电编码器之所以是工业界的“主力军”,是因为它无接触、无磨损、分辨率可以做得很高。但它的软肋也很明显:怕油污、怕粉尘,一旦码盘被污染,明暗对比度下降,信号就会失真。其输出电压可以写成光路各环节的乘积:

光电编码器像一位靠眼睛认路的旅人——光线好、路面干净时看得又远又准;一旦起雾(油污)或者蒙尘,就会“眼花”。因此它适合洁净、高精度的场合。

Vout=K×P0×τ(θ)V_{\text{out}} = K \times P_0 \times \tau(\theta)
输出电压等于光电转换系数 × 光源强度 × 码盘透过率——三者中任何一环衰减,信号都会变弱。
  1. P₀(光源强度)光源发出的光功率,相当于手电筒的亮度。亮度越高,信噪比越好。
    P0P_0
  2. τ(θ)(码盘透过率)随着转角 θ 变化,码盘在“透光(约等于 1)”与“遮光(约等于 0)”之间切换,是位置信息的载体。
    τ(θ)\tau(\theta)
  3. K(光电转换系数)光电管把光功率转换成电流/电压的增益,由材料与电路决定,相当于观察者的“敏感度”。
    KK
  4. 三者相乘光功率经过透过率调制、再经光电转换放大,最终得到可被整形电路读取的电信号。
    K×P0×τ(θ)K \times P_0 \times \tau(\theta)

磁性编码原理

再换一种导航工具:假如城市的地砖被设计成 N 极、S 极交替排列的磁性路砖,而你手里拿着一枚指南针。每路过一块路砖,指针就会摆动一下;数一数摆动次数,就知道走了多远,还能根据摆动方向判断进退。磁性编码器就是给机器人配上了这样一双“磁性眼睛”。

磁性编码器的核心是一个多极磁环——一圈磁环表面交替充上 N 极和 S 极,就像一圈磁性路砖。磁环随转轴旋转,旁边固定一个霍尔元件(或磁阻元件)来感受磁场变化。当磁极交替扫过传感器时,磁场方向周期性翻转,霍尔元件便输出一个随角度变化的电压信号。

霍尔效应的本质是:载流导体放在磁场中,运动电荷受到洛伦兹力而发生偏转,在导体两侧积累电荷形成电压。这个电压与电流和磁场强度成正比、与导体厚度成反比:

磁性编码器不怕油污、粉尘和水汽,结构简单、成本低,像是风雨无阻的“磁性指南针”。但它也怕强磁场干扰——如果旁边有电机大电流或者强力永磁体,它也会“晕头转向”。

VH=RH×I×BdV_H = \frac{R_H \times I \times B}{d}
霍尔电压 = 霍尔系数 × 控制电流 × 磁感应强度 ÷ 导体厚度。磁场越强、电流越大,电压越高。
  1. R_H(霍尔系数)由导体材料决定的常数,相当于指南针磁针的“灵敏度”。半导体材料的霍尔系数通常远大于金属。
    RHR_H
  2. I(控制电流)流过霍尔元件的电流,相当于给指南针的“初始指向力”。电流越大,偏转越明显。
    II
  3. B(磁感应强度)磁环在传感器处产生的磁场强度。N/S 极交替使得 B 的方向周期性翻转,从而产生交变信号。
    BB
  4. d(导体厚度)导体越薄,电荷偏转造成的积累越集中,电压越高。制造上常用薄膜工艺来提升灵敏度。
    dd

增量编码器

现在回到那个计步器。你从酒店出发,每走一步,计步器加一;倒着走,减一。你永远只知道“相对出发点的位移”,却不知道方向上的绝对坐标。更麻烦的是,如果中途关机或者计步器被撞清零,你就再也说不清自己走了多远——只能回到酒店重新出发。增量编码器就是这个计步器。

增量编码器通常输出三路信号:A 相、B 相和 Z 相。A 相和 B 相是两路相位相差 90° 的方波脉冲,就像你左右脚交替迈步——通过比较 A、B 谁先变化,就能判断旋转方向。Z 相每转只输出一个脉冲,相当于路途中唯一的“里程碑”,专门用于回零找参照点。控制器通过统计脉冲个数和方向,就能算出转角与转速。

A、B 两相信号的上升沿和下降沿一共构成 4 个跳变状态,因此电子电路可以“四倍频”——把每个脉冲周期再细分成 4 格。这就是增量编码器提高分辨率的经典手段:

增量编码器结构简单、成本低、响应快,是移动机器人轮子和高速电机测速的常客。但它的“失忆症”必须靠外部原点开关或 Z 相脉冲来弥补——每次上电,都得先“回到酒店门口”完成回零。

Δθ=360∘4N\Delta\theta = \frac{360^\circ}{4N}
四倍频后,角度分辨率被除以 4,相当于在“一步”和“下一步”之间又插入了 3 个中间踏步。
  1. 360°(整圈角度)码盘每转一圈,对应完整的圆周角,是所有分辨率计算的起点。
    360∘360^\circ
  2. N(每转线数)码盘一圈的刻线数,也就是每转产生的基本信号周期数。
    NN
  3. 4(四倍频因子)A、B 两相各有一个上升沿和一个下降沿,组合起来每周期出现 4 次状态跳变,相当于把 1 个脉冲格细分成了 4 格。
    44
  4. 相除运算把一圈角度均匀分给 4N 个细分格,得到增量编码器实际能分辨的最小角度。
    360∘4N\frac{360^\circ}{4N}

绝对编码器

如果城市里每一栋房子都挂着全世界唯一编排的门牌号,那么无论你何时醒来、身处何处,只要抬头看一眼门牌,就能瞬间报出精确位置。绝对编码器就是把“门牌号”直接刻在码盘上的传感器。

绝对编码器的码盘不是一圈简单的刻线,而是由多圈同心码道构成,每一圈对应二进制的一位。最内圈被分成两半(透光=1、遮光=0),第二圈分成四段,第三圈分成八段……以此类推。n 圈码道组合起来,就能表示 2 的 n 次方个不同的位置码。无论断电多久、转动多少圈,每个角度位置都对应一个唯一编码,上电瞬间就能读取——这是它和增量式的根本区别。

码盘能表示的位置码数量由码道位数决定:

这里还有一个精妙的工程细节:普通二进制码在相邻位置切换时可能有多位同时变化,比如从 0111 到 1000,四位全变,码盘刻线稍有误差就会读出一串乱码。格雷码(Gray Code)规定相邻位置只允许一位翻转,把“四位同时抢跑”变成“一位稳变”,从根本上避免了过渡区误读。多圈绝对编码器还可以通过齿轮组或电池备份记录多圈数,让“门牌号”一直延伸到 360° 之外。

M=2nM = 2^n
n 位绝对编码器共有 2ⁿ 种位置码,位数越多,圈数越多,“门牌号”越密,分辨率越高。
  1. n(码道位数)码盘上的码道数量,决定编码器用几位二进制数来表示位置。12 位、17 位、23 位是常见规格。
    nn
  2. 2(每位二态)每一位码道只有“透光/遮光”两种状态,对应二进制 0 和 1。
    22
  3. 2ⁿ(组合总数)n 位二进制能组合出的全部码值数量,每一种码值代表一个唯一位置。
    2n2^n
  4. M(位置码数量)把一圈 360° 均分成 M 份,每份对应一个“门牌号”。
    MM

信号细分与误差

计步器每走一步计一格,可如果一步的距离太大,你会觉得这条街的定位“不够细腻”。怎么办?办法是:在两大步之间再插入许多小碎步。这就是编码器行业的“电子细分”(也叫插值)——用电子电路在原始脉冲周期内继续“量”出更细的角度。

细分的依据来自 A/B 两路正交信号的幅值。正常情况下,光电或磁电信号不是陡峭的方波,而是平滑的正弦波。既然信号幅值随角度连续变化,我们就可以通过当前两路信号的幅值比例,反推出指针在这个周期内的精确位置。例如用线性插值法,在已知的粗角度基础上加上一个比例项:

不过,细分能提升分辨率,却无法消除所有误差。增量与绝对编码器都会遇到三类“路况问题”:量化误差(分辨率的一半,像计步器本身的精度)、机械误差(码盘偏心、联轴器间隙,像鞋子打滑)、电气误差(噪声干扰、温度漂移,像指南针被磁铁扰动)。工程上通常用均方根方式合成总误差来评估系统精度:

细分让小碎步更密,误差合成让我们对“路况”心里有底。有了这两把尺子,机器人的定位精度才能既“看得细”,又“算得准”。

θ=θk+VAVA+VB×Δθk\theta = \theta_k + \frac{V_A}{V_A + V_B} \times \Delta\theta_k
三类误差像三条不同方向的拉力,合成后的总误差不是简单相加,而是“平方和再开根号”。
  1. E_q(量化误差)由分辨率有限导致,最大不超过一个最小刻度的二分之一,是“尺子刻度”的固有误差。
    EqE_q
  2. E_e(机械误差)码盘安装偏心、联轴器弹性变形等带来的位置偏差,属于“路不平”造成的步幅误差。
    EeE_e
  3. E_n(噪声误差)电磁干扰、供电纹波、温度漂移造成的随机抖动,属于“环境干扰”。
    EnE_n
  4. RSS 合成对三项误差先平方求和再开根号,得到系统总误差的统计估计,比线性相加更符合误差概率分布。
    Eq2+Ee2+En2\sqrt{E_q^2 + E_e^2 + E_n^2}

选型与应用

导航工具的选择取决于行程性质:在小区里散步,计步器(增量式)轻便够用;要跨城跑长途、半夜醒来必须知道自己在哪,门牌号(绝对式)才是安心之选。机器人选编码器,遵循的是同样的“场景决定论”。

在六轴协作机械臂中,每个关节通常配备绝对编码器:断电重启后无需繁琐回零,机械臂立刻知道自己每个关节的姿态,这对安全性和操作体验至关重要。而移动机器人的驱动轮上,则常见增量编码器配合 Z 相零点:轮子需要高速计数测速,成本敏感,且开机时可以驶过零点完成初始化。选型的核心指标是分辨率——它由码盘线数乘以细分倍数决定,理论上越高越好,但要匹配真实机械传动精度,否则就是“杀鸡用牛刀”。

接口协议也是选型的关键。增量编码器输出的是 A/B/Z 脉冲,通常接入控制器的正交解码接口(QEI)或用高速计数器直接读取;绝对编码器则通过 SSI、BiSS、CANopen 等协议把位置码发给控制器。速度反馈常用 M/T 测速法:固定一个时间窗口 T,既计脉冲数又计高频时钟数,低速时不丢脉冲、高速时不过载:

回到比喻:小区散步用计步器轻便省钱,跨城长途用门牌号安心可靠。选型没有绝对的好坏,只有是否匹配场景——这正是机器人工程师日常决策的缩影。

ω=MN×T\omega = \frac{M}{N \times T}
M/T 法测得的速度 = 窗口内脉冲数 ÷(每转脉冲数 × 窗口时长),相当于数清“这段时间内走过了多少格”再换算成转速。
  1. M(窗口内脉冲数)在固定测速窗口 T 内计数器累计得到的脉冲个数,是速度计算的核心分子。
    MM
  2. N(每转脉冲数)考虑四倍频或细分后的等效每转脉冲数,把“脉冲格”换算成“转”。
    NN
  3. T(测速窗口时长)采样的时间窗口,单位通常为秒。窗口越长,低速时数到的脉冲越多,测量越稳。
    TT
  4. 相除运算脉冲数除以“比例系数”,得到每秒多少转;需要弧度制时再乘以 2π 即可。
    MN×T\frac{M}{N \times T}

调试与维护

导航系统出问题时,你会按顺序排查:先看计步器是否被碰清零了,再看地砖是不是被施工队翻过,最后才怀疑自己是不是记错了路。编码器调试也是同样的思路——先排除最简单的电气问题,再怀疑机械安装,最后才考虑环境因素。

最常见的故障是丢步(脉冲数少于实际转角)和码值跳变(绝对读数突然乱跳)。排查顺序通常如下:第一步查供电与接地,共地不良或电源纹波过大,会在长线上引入共模干扰;第二步查信号线屏蔽,编码器线必须用双绞屏蔽线并单点接地;第三步查联轴器是否松动或打滑,这是“轮子转了但码盘没转”的经典原因;第四步检查码盘是否被油污污染,光电编码器尤其敏感。零点标定是另一项基本功:增量式依靠 Z 相脉冲或外部原点开关建立基准,绝对式则读取基准位置的出厂码并写入控制器。

调试中还会遇到“误差到底出在哪”的问题。你可以把总误差拆成量化、机械、噪声三个来源,分别测量再合成验证,就像分别检查尺子、鞋子和路况:

调试编码器就像修一条“导航链路”:供电是电源、信号线是路、联轴器是鞋带、码盘是眼睛。按顺序逐项排查,大部分“迷路”问题都能在几分钟内定位——这也是现场工程师最值钱的实战经验。

Etotal=Eq2+Ee2+En2E_{\text{total}} = \sqrt{E_q^2 + E_e^2 + E_n^2}
把三个误差来源分别测出来,再做平方和开根号,就能判断到底是哪一环拖了后腿。
  1. E_q(量化误差实测)用高精度的外部基准(如激光干涉仪)对拍,分离出编码器自身的分辨率极限。
    EqE_q
  2. E_e(机械误差实测)正反转各测多次取差异,能分离出联轴器间隙与码盘偏心导致的“松旷量”。
    EeE_e
  3. E_n(噪声误差实测)停机状态下采集码值跳动的幅度,量化电磁干扰与供电噪声。
    EnE_n
  4. 合成比对将三项平方和开根号与实测总误差比较,差值显著则说明还有未排查到的误差源。
    Eq2+Ee2+En2\sqrt{E_q^2 + E_e^2 + E_n^2}

AI 应用场景

协作机械臂的上电姿态恢复

阶段:数据采集与状态感知

解决的问题:传统机械臂断电后,增量编码器丢失所有位置信息,必须花费数十秒执行“回零”动作;如果机械臂正被夹持在狭窄工位中,回零运动还可能碰撞周边设备。绝对编码器让控制器上电瞬间即可读取每个关节的真实角度,省去回零流程,同时让 AI 规划算法在开机后立即获得可靠的状态输入。

具体案例:某协作机器人厂商在六轴关节全部采用 17 位单圈绝对编码器,并配合霍尔传感器记录多圈圈数。产线因停电重启后,机械臂无需回零即可继续执行上一工位的任务,AI 轨迹规划器基于绝对角度直接生成下一段运动指令,停机恢复时间从 40 秒压缩到 3 秒以内。

移动机器人里程计与导航融合

阶段:感知与状态估计

解决的问题:轮式移动机器人需要实时估计自身位姿。仅靠增量编码器做里程计,会因轮子打滑而累积漂移;仅靠激光雷达或视觉做 AI 定位,在特征稀疏的环境中又会失效。增量编码器提供高频轮速与位移信息,与 AI 定位结果融合,能在特征稀疏时“撑住”位姿估计。

具体案例:仓储 AGV 在两侧驱动轮安装 1000 线增量编码器,通过 M/T 法以 100Hz 频率输出轮速,再与 IMU(惯性测量单元)和激光点云匹配结果做扩展卡尔曼滤波融合。在长达 500 米的巷道中,融合后的横向偏差小于 5 厘米,而单独用编码器里程计会漂移超过 30 厘米。

工业视觉检测的同步触发

阶段:数据采集与标定

解决的问题:传送带上的产品高速移动,相机如果按固定频率拍照,产品在图像中的位置会忽左忽右,导致深度学习缺陷检测模型的定位精度下降。编码器将传送带的位移转化为脉冲,用脉冲精确触发相机拍照,保证每张图像中产品都出现在相同像素位置。

具体案例:某电子元件质检线在传送带驱动轮上加装 2500 线增量编码器,每走过 2 毫米触发一次线阵相机采集。接入 AI 视觉检测模型后,缺陷检测召回率从 91% 提升至 98%,同时系统能根据编码器脉冲计算产品长度,自动剔除“叠加漏检”的异常品。

Python 演示

python53 行
def gray_encode(n, bits):    num = n ^ (n >> 1)    return format(num, '0{}b'.format(bits))  def quadrature_signals(angle_deg, lines):    period = 360.0 / lines    phase = angle_deg % period    a = 1 if phase < period / 2 else 0    b = 1 if (phase >= period / 4) and (phase < period * 3 / 4) else 0    return a, b  class QuadDecoder:    def __init__(self, lines):        self.lines = lines        self.pulse = 0        self.prev_ab = (0, 0)     def update(self, a, b):        state = (a << 1) | b        prev = (self.prev_ab[0] << 1) | self.prev_ab[1]        cw = ((2, 3), (3, 1), (1, 0), (0, 2))        ccw = ((3, 2), (1, 3), (0, 1), (2, 0))        if state != prev:            if (prev, state) in cw:                self.pulse += 1            elif (prev, state) in ccw:                self.pulse -= 1        self.prev_ab = (a, b)     def angle_deg(self):        return self.pulse / (self.lines * 4) * 360.0  def main():    lines = 64    dec = QuadDecoder(lines)    true_total = 0.0    for step in range(3600):        true_total = step * 0.5        a, b = quadrature_signals(true_total, lines)        dec.update(a, b)    measured = dec.angle_deg() % 360.0    true = true_total % 360.0    print('真实角度: {:.2f} deg'.format(true))    print('解码角度: {:.2f} deg'.format(measured))    print('量化误差: {:.4f} deg'.format(abs(measured - true)))    print('格雷码(位置13, 4位): {}'.format(gray_encode(13, 4)))  if __name__ == '__main__':    main()
目的:用纯 Python 模拟增量编码器的码盘输出与四倍频解码,观察量化误差,并演示格雷码的生成,帮助理解编码器角度的测量链路。
  1. def quadrature_signals(angle_deg, lines):把真实角度换算成 A/B 两路方波信号,模拟码盘物理输出。
  2. a = 1 if phase < period / 2 else 0一个信号周期内前半段为高电平、后半段为低电平,形成 A 相脉冲。
  3. b = 1 if (phase >= period / 4) and (phase < period * 3 / 4) else 0B 相比 A 相滞后四分之一周期,产生 90° 相位差,用于辨向。
  4. state = (a << 1) | b把两路电平拼成一个 2 位状态字(0~3),相当于计步器读取“左右脚姿态”。
  5. cw = ((2, 3), (3, 1), (1, 0), (0, 2))顺时针旋转时的状态转移表,每跳一次代表走过四分之一栅格。
  6. self.pulse += 1状态按顺时针表跳变时脉冲加一,正转计数。
  7. return self.pulse / (self.lines * 4) * 360.0脉冲数除以四倍频后总脉冲数再乘 360°,得到当前解码角度。
  8. print('量化误差: {:.4f} deg'.format(abs(measured - true)))输出量化误差,直观看到增量测量受分辨率限制的固有精度边界。

常见误区

误区我觉得增量编码器只是比绝对编码器便宜一点,断电后顶多多走两步就能找回位置,影响不大。

正解增量编码器本质是计步器,内部只保留“相对基准的脉冲数”,一旦断电,计数清零,位置信息彻底丢失。上电后必须借助 Z 相脉冲、原点开关或人工找零来重建基准,否则机器人不知道关节在哪,贸然运动可能撞机。绝对编码器则像门牌号,断电后码盘位置依然物理存在,上电即可读取。

为何常见:生活中手机计步器会自动保存历史数据,让人误以为“计数器件天然有记忆”,忽略了增量编码器只依赖带电计数电路这一事实。

误区分辨率当然是越高越好,买编码器直接选最高线数,反正多花点钱总没错。

正解分辨率受整个传动链的限制——联轴器间隙、齿轮回差、结构刚度都会把精度拖低。如果机械误差是 0.1°,选 0.001° 的编码器只是浪费带宽和成本,还会增加信号处理负担。正确做法是让编码器分辨率比机械精度高 3~5 倍即可,就像尺子量到毫米级就够用时,不必上电子显微镜。

为何常见:厂商宣传往往强调“超高分辨率”,让人误以为指标越高系统精度越高,忽略了“木桶效应”中最短的那块板往往是机械结构。

误区直接用二进制编码不是更直观吗?格雷码绕来绕去,纯粹是工程师给自己添麻烦。

正解二进制码在相邻位置切换时可能多位同时翻转(如 0111→1000),码盘刻线误差会导致各码道翻转时机不一致,过渡区会读出“中间乱码”。格雷码规定相邻位置只翻转一位,把“多位赛跑”变成“单兵行动”,从原理上消灭了过渡区竞争冒险。它牺牲了直观性,换来了极高的可靠性。

为何常见:从数学上看二进制最自然,但没有考虑到物理码盘上“多位同时精确翻转”几乎不可能实现,这是典型的“纸上谈兵”思维。

误区磁编码器不怕油污和灰尘,那以后统一用它,省心又便宜。

正解磁编码器的确是“环境耐受型选手”,但它怕强磁场——电机大电流产生的磁场、附近的永磁体都可能干扰霍尔元件读数。同时它的分辨率通常低于同尺寸的光电编码器,在高精度、高带宽要求的场合(如精密机械臂关节)仍以光电式为主。选型要综合环境、精度、成本三个维度,而不是抓住一个优点就一锤定音。

为何常见:产品宣传常把“耐油污”作为磁编码器的核心卖点,容易让人忽略它的短板,形成“一招鲜”的错觉。

误区编码器又不是什么精密仪器,把电源和信号线接上就能转,接地和屏蔽无所谓。

正解编码器信号是高频小信号,长线传输时如果共地不良、屏蔽层未接,电机变频器或伺服驱动器的强电噪声会耦合进信号线,导致丢步、跳码,甚至损坏接口。工程规范要求使用双绞屏蔽线、屏蔽层单点接地、差分信号传输(如 RS-422/SSI),并在控制器侧加滤波。大多数“转速突然乱跳”的现场故障,根因都在接地与屏蔽。

为何常见:实验室里短距离接线通常表现良好,掩盖了长线工业现场的电磁干扰问题,导致工程师把故障误判为编码器本身损坏。

面试题

Q1. 增量编码器与绝对编码器最本质的区别是?

单选题 · easy

  • A.增量更便宜且精度更高
  • B.绝对断电后仍保留位置← 正确答案
  • C.增量使用光电原理
  • D.绝对输出的是模拟信号

答案:B。增量编码器像计步器,断电后计数清零、位置丢失;绝对编码器像门牌号,每个位置有唯一码,断电后上电即可读取位置。选项 A 的“精度更高”不成立,B 是正确的本质区别,C 是原理分类而非二者区别,D 错误——绝对编码器输出的是数字码。

Q2. 增量编码器 A、B 两相信号的相位差通常为?

单选题 · easy

  • A.0度,完全同相
  • B.90度,四分之一周期← 正确答案
  • C.180度,半周期
  • D.270度,四分之三周期

答案:B。A/B 两相相差 90°(四分之一周期),通过比较两路的先后顺序来判断旋转方向,就像左右脚交替先后来辨别前进还是后退。同相无法辨向,180° 只能做计数不能可靠辨向,270° 等于反向的 90° 也不符合标准。

Q3. 码盘每转输出 500 个脉冲,经过四倍频后角度分辨率为?

单选题 · mid

  • A.0.36度
  • B.0.18度← 正确答案
  • C.0.72度
  • D.0.09度

答案:B。四倍频利用 A、B 两相的上升沿和下降沿,把每个脉冲周期细分成 4 格,分辨率 = 360° ÷(4 × 500)= 0.18°。选 A 是忘了除以 4,选 C 是只除以了 500,选 D 则是误把 4 当成了 16 倍频。

Q4. 关于格雷码,下列说法正确的是?

单选题 · mid

  • A.相邻码值只有一位变化← 正确答案
  • B.编码效率比二进制更高
  • C.可以直接参与算术运算
  • D.位数越多抗干扰能力越强

答案:A。格雷码的核心价值是相邻位置只翻转一位,避免多码道同时翻转产生的过渡误读。它的编码效率与二进制相同,不能直接做算术运算,位数增加只提高分辨率而非抗干扰能力。

Q5. 绝对编码器位数为 12 位时,单圈位置码数量为?

单选题 · mid

  • A.1024
  • B.4096← 正确答案
  • C.2048
  • D.8192

答案:B。n 位绝对编码器共有 2ⁿ 个位置码,12 位就是 2¹² = 4096。1024 是 10 位,2048 是 11 位,8192 是 13 位。位置码数量决定一圈被切成多少份,直接对应分辨率。

Q6. M/T 测速法要同时保证高低速测量精度,关键在于?

单选题 · extreme

  • A.提高供电电压稳定
  • B.使计时与计数同步← 正确答案
  • C.增加码盘码道数
  • D.降低电机加速度

答案:B。M/T 法在一个窗口内同时计编码器脉冲数和高频时钟数。如果高频时钟与脉冲计数不同步,窗口边界处的脉冲归属会产生计数偏差,低速时尤为致命。同步测量才能让分子分母对应同一个物理窗口,与供电、码道数、加速度无关。

Q7. 增量编码器上电后重新建立位置基准,最常用的参考信号是?

单选题 · mid

  • A.A相下降沿
  • B.B相上升沿
  • C.Z相脉冲← 正确答案
  • D.电源复位信号

答案:C。Z 相每转只输出一个脉冲,是码盘圆周上唯一的“里程碑”,配合原点开关即可完成回零。A/B 相每转输出成百上千个脉冲,无法区分“这是第几个”,电源复位信号只是电路动作,与机械位置无关。

Q8. 下列属于编码器检测原理分类的是?

多选题 · easy

  • A.光电编码器← 正确答案
  • B.磁性编码器← 正确答案
  • C.增量编码器
  • D.超声波编码器

答案:AB。按检测原理分类,主流是光电式和磁电式。增量式属于“输出方式”分类而非原理分类。超声波没有形成标准编码器产品分类,属于干扰项。回答时要注意“原理”与“输出方式”是两套正交的分类维度。

Q9. 增量编码器典型的信号线通常包括?

多选题 · mid

  • A.A相← 正确答案
  • B.B相← 正确答案
  • C.Z相← 正确答案
  • D.时钟信号

答案:ABC。增量编码器输出 A 相、B 相(正交计数辨向)和 Z 相(每转零点),共三路核心信号。时钟信号(Clock)属于 SSI/BiSS 等绝对编码器串行接口的同步信号,不属于增量编码器的基本输出。

Q10. 现场出现编码器码值跳变或丢步,常见原因有?

多选题 · hard

  • A.传动联轴器松动← 正确答案
  • B.信号线接地不良← 正确答案
  • C.码盘表面油污← 正确答案
  • D.电机温度偏低

答案:ABC。联轴器松动导致“轴转了但码盘没同步转”造成丢步;接地不良引入共模干扰导致跳码;码盘油污使光电信号对比度下降产生误判。电机温度偏低不会直接导致跳码,属于干扰项。排查顺序正是“机械→电气→环境”三步法。