2. 编码器基础
在运动控制与角度测量系统中,编码器是把机械位移转换为电信号的“感知前端”。FPGA 要正确读取编码器,必须先理解三类编码器的物理原理与输出信号形态:增量式只输出相对变化,绝对式直接输出位置编码,混合式则兼顾两者的优点。本节从信号层面梳理它们的差异,为后续接口设计打基础。
一、增量式编码器:以脉冲计数表达位移
增量式编码器内部通常由码盘、光源和光电接收管组成。码盘上刻有等间距的透光/遮光狭缝,旋转时接收管输出近似方波的 A、B 两路信号。A、B 相位差 90°(正交),通过判断 A 超前 B 还是 B 超前 A 即可得到旋转方向;对脉冲计数则得到相对位移。每转还会输出一路 Z 信号(零位脉冲),用于每圈一次的基准校正。
增量式的关键参数是每转脉冲数(PPR)与倍频方式。FPGA 常用四倍频计数:对 A、B 的上升沿和下降沿都计数,分辨率提升为 PPR×4。其输出信号类型主要有:
- 单端 TTL/CMOS:A、B、Z 三路,接线简单,适合短距离、低噪声环境。
- 差分 RS-422/HTL:A+/A−、B+/B−、Z+/Z−,抗共模干扰强,适合长线传输与工业现场。
- 集电极开路:需外接上拉电阻,电平由外部电源决定。
二、绝对式编码器:每个位置都有唯一编码
绝对式编码器码盘上有多圈同心码道,每个角度位置对应一组唯一的二进制码。按输出接口可分为并行输出与串行输出。并行输出直接给出 N 位格雷码或二进制码,FPGA 可一次读取;串行输出则通过 SSI、BiSS、EnDat、多摩川等协议逐位传输。
绝对式又分单圈与多圈:单圈只记录 0°~360° 内的位置,多圈额外用齿轮或电池计数记录圈数。其核心优势是断电后位置不丢失,上电即可获得绝对角度,无需回零。常见输出信号类型如下表:
| 类型 | 典型信号 | 特点 | FPGA 接口 |
|---|---|---|---|
| 并行二进制 | D0~Dn | 速度快、线多 | GPIO 直读 |
| SSI | CLK、DATA | 同步串行、简单 | 时钟生成+采样 |
| BiSS-C | CLK、DATA | 双向、带 CRC | 收发状态机 |
| EnDat 2.2 | CLK、DATA | 可读参数与诊断 | 协议栈 |
| 多摩川 | SD、REQ | 伺服常用 | 串行解析 |
三、混合式编码器:增量与绝对的折中
混合式(又称准绝对式)编码器在增量码道之外,增加一组用于粗定位的绝对码道。上电时先读取绝对码道获得一个较粗的绝对位置,再结合增量脉冲细分,从而在无需回零的情况下得到较高分辨率。它兼顾了绝对式“上电知位置”和增量式“高分辨率、低成本”的优点,常见于中高端伺服与机器人关节。
其输出往往同时包含增量 A/B/Z 与绝对串行数据,FPGA 需要并行处理两路信息:增量通道做高频计数,绝对通道做低速协议解析,最后在逻辑中融合成统一位置值。
四、信号链与 FPGA 采集要点
从编码器到 FPGA,信号经历“物理量→电信号→电平转换→采样/解码→位置值”的链路。下图给出三类编码器在 FPGA 侧的典型连接与信号关系:
在 FPGA 中,增量信号通常先做同步化与去抖,再用状态机实现四倍频计数;绝对串行信号则需生成时钟、按位采样并校验 CRC。下面是一段简化的正交解码计数逻辑示意:
// 正交解码四倍频计数(简化)
always @(posedge clk) begin
a_d <= a; b_d <= b;
case ({a_d, b_d, a, b})
4'b00_01, 4'b01_11, 4'b11_10, 4'b10_00: pos <= pos + 1;
4'b00_10, 4'b10_11, 4'b11_01, 4'b01_00: pos <= pos - 1;
default: ;
endcase
end
五、常见误区与复盘
- 把增量式当绝对式用:上电位置随机,若不做回零就闭环,极易飞车。
- 忽略差分与单端混接:RS-422 差分对若只接单端,抗干扰能力大幅下降,长线易丢脉冲。
- 忘记格雷码转换:绝对式并行输出多为格雷码,直接当二进制用会产生跳变错误。
- 采样时钟不同步:异步信号未做两级同步,亚稳态会导致计数偶发错误。
- 混合式只读增量:忽略绝对码道,等于浪费了免回零能力。