编码器基础:光电编码器与磁编码器的工作原理、增量式与绝对式编码器的区别

编码器这东西,说白了就是个角度或位置的“翻译官”。它把机械的旋转或直线运动,翻译成电信号,让控制器能读懂。我刚开始接触这玩意儿时,总觉得它就是个高级电位器,后来踩过坑才明白——编码器的门道深着呢。

咱们这一章,就把编码器的底裤扒干净。从工作原理到选型对比,我尽量用大白话讲透。

一、光电编码器:用光来“数格子”

光电编码器,核心就三样东西:发光管、码盘、光敏接收管。码盘上刻着一圈圈透光和不透光的条纹,像个微型摩斯密码盘。

工作时,发光管对着码盘照,码盘一转,光就忽明忽暗地打在接收管上。接收管把光信号转成电脉冲——有光就是高电平,没光就是低电平。脉冲数一数,位置就出来了。

关键点:光电编码器的精度,取决于码盘上的刻线数。刻线越多,分辨率越高。我见过一个高精度的光电编码器,码盘上刻了十几万条线,转一圈能输出几十万个脉冲。

不过,光电编码器有个致命弱点——怕脏。码盘上落一粒灰尘,可能就丢一个脉冲。我在一个粉尘车间里吃过这个亏,后来乖乖换成了磁编码器。

二、磁编码器:用磁场来“数磁极”

磁编码器的工作原理,跟光电编码器有点像,只是把“光”换成了“磁场”。它用磁阻传感器或霍尔元件,来检测磁极的变化。

磁编码器的核心是一个多极磁环,上面交替排列着N极和S极。磁环一转,传感器就能感知到磁场方向的翻转,每翻转一次,输出一个脉冲。

我个人习惯在振动大、油污多的场合用磁编码器。它不怕灰尘、不怕油污,甚至能泡在水里工作。当然,精度上比同等级的光电编码器要差一些,毕竟磁场信号没光信号那么“锐利”。

对比项 光电编码器 磁编码器
工作原理 光透过码盘产生脉冲 磁场变化产生脉冲
精度 高(可达亚角秒级) 中等(通常角分级)
抗污染能力 差(怕灰尘、油污) 强(可耐受恶劣环境)
工作温度 -40°C ~ 85°C -40°C ~ 150°C
成本 较高 较低
典型应用 机床、机器人、测量仪器 电机、汽车、工业传动

我的经验:如果你做的是精密仪器,别犹豫,上光电编码器。如果你做的是电机控制或汽车电子,磁编码器更皮实。我曾经在一个伺服电机项目里,为了省成本用了光电编码器,结果现场振动太大,码盘碎了……后来换成磁编码器,再没出过问题。

三、增量式编码器:只告诉你“动了多少”

增量式编码器,就像个计数器。它只输出脉冲,不告诉你当前在哪个位置。你需要自己数脉冲,才能知道转了多少角度。

它的输出信号通常有两路:A相和B相。A相和B相相差90度相位,通过判断谁先谁后,就能知道正反转。有些编码器还有Z相(零位信号),每转一圈输出一个脉冲,用来校准位置。

增量式编码器的优点是简单、便宜、响应快。但缺点也很明显——断电后位置信息就丢了。每次上电,都得先回一次零点,不然控制器不知道当前在哪儿。

// 增量式编码器脉冲计数示例(伪代码)
int pulse_count = 0;

void encoder_interrupt_A() {
    if (digitalRead(B_pin) == HIGH) {
        pulse_count++;  // 正转
    } else {
        pulse_count--;  // 反转
    }
}

float get_angle() {
    return (float)pulse_count / PULSES_PER_REVOLUTION * 360.0f;
}

避坑指南:我曾经在一个AGV小车上用了增量式编码器,结果每次断电重启后,小车都不知道自己轮子朝哪个方向。后来我加了个霍尔接近开关做上电归零,才算解决。记住:增量式编码器必须配合归零逻辑使用。

四、绝对式编码器:一上电就知道“我在哪”

绝对式编码器就高级多了。它每个位置都有一个唯一的编码值,一上电就能读出当前角度,不需要归零。

它的码盘不是简单的透光条纹,而是一圈圈格雷码或二进制码。每个角度位置对应一组唯一的码值,读出来就知道位置。

绝对式编码器又分两种:单圈和多圈。单圈的只能记录一圈内的位置,多圈的还能记录转了多少圈。多圈编码器内部通常有齿轮组或电池备份,能记住圈数。

对比项 增量式编码器 绝对式编码器
输出信号 脉冲(A/B/Z相) 并行二进制/串行协议
断电记忆 无(需归零) 有(上电即知位置)
分辨率 取决于脉冲数 取决于位数(如17位=131072分辨率)
接线复杂度 简单(3~6根线) 复杂(并行线多,串行需协议)
成本 低 高
典型应用 速度测量、简单位置控制 绝对位置控制、多轴同步

选型建议:如果你的系统需要断电后保持位置信息,或者每次上电都要快速进入工作状态,那就别省那点钱,直接上绝对式编码器。我做过一个多轴同步的包装机项目,用了增量式编码器,每次上电都要花30秒归零,客户嫌慢。换成绝对式编码器后,上电即用,体验好太多了。

五、知识体系总览

下面这张图,把编码器的分类和核心逻辑串起来了。你一看就明白。

编码器知识体系 编码器 光电编码器 磁编码器 增量式 绝对式 需归零 断电丢失位置 上电即知位置 单圈/多圈 抗污染强 精度中等 精度高 怕污染 选型口诀 精密环境选光电,恶劣工况用磁编; 断电记忆要绝对,只测速度用增量。

六、怎么选?我的实战建议

选编码器,我一般按这个顺序问自己:

  1. 环境脏不脏? 脏就上磁编码器,干净就上光电编码器。
  2. 断电后要不要记住位置? 要就绝对式,不要就增量式。
  3. 精度要求多高? 高精度(角秒级)只能光电+绝对式;一般精度(角分级)磁编码器够用。
  4. 预算多少? 钱少就增量式,钱多就绝对式。别为了省钱选错类型,返工更贵。

一个小技巧:如果你不确定选哪种,可以先买一个带SSI或BiSS接口的绝对式磁编码器。这种编码器兼容性好,精度够用,而且不贵。我最近几个项目都这么干,省了不少事。

嗯,编码器的基础就这些。记住:光电和磁编码器是“怎么测”,增量式和绝对式是“怎么输出”。搞清楚了这两层关系,选型就不会乱。