1. 编码器基础:增量式与绝对式原理、分辨率与精度、电气接口

各位同学,咱们开始第一讲。编码器这东西,说白了就是电机的位置传感器。没有它,你的运动控制卡就是个瞎子。我刚开始做运动控制那会儿,总觉得编码器不就是个转一圈发几个脉冲的东西吗?后来被现场问题教育了几次,才明白这里面的门道有多深。

这一章,咱们把编码器的基础概念掰开揉碎讲清楚。你搞懂了这些,后面设计接口电路、写驱动程序的时候,才能心里有底。

1.1 增量式编码器:最简单的测位置方式

增量式编码器,原理其实很简单。它内部有一个码盘,上面刻着明暗相间的条纹。光通过码盘,被光敏元件接收,就产生了脉冲信号。

它输出两路信号:A相和B相。这两路信号相位差90度。电机正转时,A相领先B相90度;反转时,B相领先A相90度。通过判断谁领先谁,就能知道转向。

关键点:增量式编码器只能告诉你位置变化了多少,不能告诉你当前在哪儿。断电后位置信息就丢了,每次上电必须回零。

我在一个自动化产线项目里遇到过这种情况:设备断电后重新上电,机械臂直接撞到了限位。查了半天,发现就是增量式编码器没做回零处理。从那以后,我只要用增量式编码器,一定在程序里加断电位置保存和上电回零逻辑。

分辨率怎么算?

增量式编码器的分辨率,就是转一圈能发出多少个脉冲。比如一个编码器标称1000线(PPR),意思就是转一圈输出1000个脉冲。

但这里有个坑——你还能通过A、B两相的上升沿和下降沿做4倍频。也就是说,1000线的编码器,实际能分辨出4000个位置。我习惯把这个叫做「计数分辨率」。

参数 说明 举例(1000线编码器)
PPR(脉冲/转) 每转输出的脉冲数 1000
单倍频分辨率 每个脉冲对应的角度 360° / 1000 = 0.36°
4倍频分辨率 利用A/B相边沿 360° / 4000 = 0.09°

我的习惯:设计电路时,我会把编码器接口的计数频率留出至少20%的余量。比如电机最高转速3000rpm,编码器5000线,4倍频后每秒产生100万个脉冲。那我选的计数器芯片或者STM32定时器,至少要能处理1.2MHz的输入频率。

1.2 绝对式编码器:上电就知道位置

绝对式编码器和增量式最大的区别,就是它每个位置都有一个唯一的编码值。上电一读,就知道当前在哪个角度。不需要回零,不怕断电。

它的码盘上刻的不是均匀条纹,而是一圈一圈的格雷码或者二进制码。每一圈代表一位数据,圈数越多,分辨率越高。

我记得有一次做医疗设备,客户要求设备断电后位置不能丢,而且上电必须立即工作,不能有回零动作。那没得选,只能用绝对式编码器。

单圈 vs 多圈

  • 单圈绝对式:只能记录一圈之内的位置。转一圈,编码值就循环了。如果你需要知道转了多少圈,单圈的不够用。
  • 多圈绝对式:内部有机械齿轮或者电子计数器,能记录转了多少圈。比如12位多圈,就能记录4096圈。我一般选多圈的,省心。

1.3 分辨率与精度:别搞混了

这两个概念,我见过太多人搞混了。包括一些做了好几年的工程师。

分辨率是编码器能分辨的最小位置变化。比如17位绝对式编码器,分辨率就是360° / 2^17 ≈ 0.0027°。这个值只和编码器的位数有关。

精度是编码器实际测量值和真实值之间的误差。它受码盘加工误差、安装偏心、温度漂移等因素影响。

我曾经踩过的坑:选了一个20位的绝对式编码器,以为精度很高。结果装到设备上一测,重复定位误差有0.1°。查了数据手册才发现,它的精度只有±0.05°,和分辨率差了十万八千里。所以选型的时候,一定要看精度指标,别只看位数。

概念 定义 典型值(17位编码器)
分辨率 能分辨的最小位置变化 0.0027°
精度 测量值与真实值的偏差 ±0.01° ~ ±0.1°

1.4 电气接口类型:选对接口很重要

编码器的电气接口,决定了你怎么设计硬件电路。我按自己常用的顺序,一个一个说。

TTL接口(5V差分)

这是最常用的接口。输出RS-422差分信号,A+、A-、B+、B-、Z+、Z-共6根线。差分传输抗干扰能力强,能传几十米。我大部分项目都用这个。

HTL接口(10-30V推挽)

输出电平高,抗干扰能力更强。适合工业现场,传输距离能到100米以上。但要注意,STM32的GPIO是3.3V或5V的,不能直接接HTL信号,必须用电平转换电路。

SSI接口(同步串行)

绝对式编码器常用的接口。时钟+数据两根线,同步传输。时钟由接收端(比如STM32)提供,编码器在时钟的驱动下逐位输出数据。我一般用SPI模拟SSI协议。

BiSS接口(双向同步串行)

SSI的升级版,速度更快,还能双向通信。除了传位置数据,还能读编码器的温度、报警信息。BiSS-C模式是开源的,用起来方便。不过时序要求严格,我建议用STM32的定时器+SPI配合实现。

接口类型 信号电平 传输距离 适用编码器 STM32直连?
TTL (RS-422) 5V差分 ~50m 增量式 需RS-422接收器
HTL (推挽) 10-30V ~100m 增量式 需电平转换
SSI 5V/RS-422 ~50m 绝对式 需RS-422收发器
BiSS 5V/RS-422 ~50m 绝对式 需RS-422收发器

我的选型建议:如果只是做实验或者短距离传输,TTL接口的增量式编码器就够了,便宜又好买。如果是工业设备,我建议用HTL接口或者绝对式编码器加BiSS接口。虽然成本高一些,但稳定性和可靠性好很多。

1.5 知识结构总览

下面这张图,把这一章的核心知识点串起来了。你对照着看,心里就有谱了。

编码器基础知识结构 编码器 增量式编码器 绝对式编码器 A/B/Z 脉冲 4倍频计数 格雷码输出 单圈/多圈 电气接口:TTL / HTL / SSI / BiSS 分辨率 ≠ 精度(切记!) 分辨率:能分辨的最小变化 精度:实际值与真实值偏差 选型时先看精度指标 别只看分辨率位数