4、编码器与触发同步:编码器原理(增量式/式)、触发模式(上升沿/下降沿)、编码器与相机行频匹配计算

做线扫相机项目,编码器这块要是没搞明白,后面全是坑。我见过太多人把相机接上,图像拉出来一看——要么拉伸变形,要么图像断层,折腾半天发现是编码器信号没配好。

说白了,编码器就是线扫相机的“心跳”。它告诉相机:该走一步了。没有这个信号,线扫相机就是一坨废铁。

4.1 编码器原理:增量式 vs 式

编码器分两种:增量式和式。咱们做线扫标定,绝大多数场景用的是增量式。为什么?便宜、够用、接口简单。

对比项 增量式编码器 式编码器
输出信号 A、B、Z 三路脉冲 格雷码/二进制并行或串行
断电记忆 不记忆位置 记忆位置
分辨率 可做很高(几万线/转) 受位数限制
成本 低 高
线扫适用性 ★★★★★ ★★★☆☆

增量式编码器怎么工作的?

它内部有个码盘,上面刻着明暗相间的条纹。光通过条纹,被接收器检测到,就产生脉冲。A相和B相相差90度相位,用来判断正反转。Z相每转一圈出一个脉冲,用来归零。

我记得有一次在现场调试,编码器接上去,相机触发乱跳。查了半天,发现是A/B相接反了。你想想看,A相和B相一旦接反,方向就反了,触发时序全乱套。

我的习惯:每次接线前,先用示波器看A/B/Z三路波形。确认脉冲幅度、占空比、相位差都正常,再往相机上接。这一步能省你半天排查时间。

式编码器什么时候用?

如果设备断电后需要知道当前位置,或者运动控制精度要求极高,那就得上式。但线扫相机标定场景里,增量式完全够用。我个人很少在线扫项目里用式,除非客户指定。

4.2 触发模式:上升沿 vs 下降沿

编码器信号进相机,相机怎么响应?这就涉及到触发模式。

大多数线扫相机支持两种触发边沿:

  • 上升沿触发:信号从低电平跳变到高电平时,相机采集一行
  • 下降沿触发:信号从高电平跳变到低电平时,相机采集一行

你可能会问:选哪个?

其实没有的对错。关键看编码器输出信号的特性。如果编码器输出的是差分信号(RS-422),上升沿和下降沿都很陡峭,选哪个都行。但如果编码器是集电极开路输出,上升沿可能比较缓,这时候选下降沿更稳定。

避坑指南:我曾经遇到一个项目,编码器信号线长了,上升沿变得很缓。相机在上升沿触发,结果每行触发的位置都不稳定,图像出现周期性抖动。后来改成下降沿触发,问题立刻解决。原因是下降沿由三极管主动拉低,速度更快、更一致。

还有一个细节:触发脉宽。相机对触发信号的最小脉宽有要求,一般是几微秒到几十微秒。如果编码器转速很高,脉冲宽度变窄,可能低于相机的最小要求,导致丢行。

怎么算?举个例子:编码器分辨率1000线/转,转速3000转/分,那每转周期是20ms,每线周期是20μs。如果相机要求最小脉宽5μs,那20μs的脉冲宽度是够的。但如果转速提到6000转/分,每线周期变成10μs,脉宽只有5μs,刚好卡在临界点。这时候就得小心了。

4.3 编码器与相机行频匹配计算

这是整个编码器同步的核心。匹配不对,图像要么拉伸、要么压缩、要么断层。

核心公式:

行频 (Hz) = 编码器分辨率 (线/mm) × 运动速度 (mm/s)

或者反过来:

编码器分辨率 (线/mm) = 行频 (Hz) / 运动速度 (mm/s)

举个例子:

  • 运动速度:100 mm/s
  • 相机最大行频:80 kHz
  • 需要的像素精度:0.05 mm/pixel

那编码器分辨率应该设多少?

先算需要的行频:

行频 = 100 mm/s ÷ 0.05 mm/pixel = 2000 Hz

2000 Hz 远低于80 kHz,相机完全扛得住。

编码器分辨率:

编码器分辨率 = 2000 Hz ÷ 100 mm/s = 20 线/mm

也就是每毫米20个脉冲。换算成常见的编码器参数,大概是508线/英寸(20 × 25.4 ≈ 508)。

关键点:编码器分辨率不是越高越好。分辨率太高,行频跟着高,相机可能吃不消。分辨率太低,图像精度不够。匹配的核心是:让相机工作在行频范围内,同时满足精度要求。

实际项目中的匹配步骤:

  1. 确定目标像素精度(比如0.05 mm/pixel)
  2. 确定最大运动速度(比如200 mm/s)
  3. 计算所需行频:200 ÷ 0.05 = 4000 Hz
  4. 确认相机最大行频是否大于4000 Hz(一般线扫相机都支持)
  5. 计算编码器分辨率:4000 ÷ 200 = 20 线/mm
  6. 选型:找接近的编码器规格,比如500线/英寸(≈19.7线/mm)

嗯,这里要注意:编码器分辨率通常用“线/转”或“线/英寸”表示。做计算时一定要统一单位。我见过有人把线/转和线/毫米搞混,结果图像拉伸得一塌糊涂。

4.4 知识结构图:编码器与触发同步

下面这张图把编码器、触发、行频匹配的关系串起来了。你可以把它当作调试时的检查清单。

编码器与触发同步知识结构 编码器类型 增量式 式 触发模式 上升沿 下降沿 行频匹配计算 行频 = 分辨率 × 速度 核心参数:编码器分辨率、运动速度、相机行频、像素精度 匹配计算流程 ① 确定像素精度 ② 确定运动速度 ③ 计算所需行频 ④ 计算编码器分辨率 ⑤ 选型 常见问题:信号抖动、脉宽不足、A/B相接反、单位换算错误

4.5 实战中的几个坑

坑一:编码器信号抖动

编码器在低速时,信号抖动会比较明显。尤其是机械振动大的场合,抖动会导致相机误触发。解决办法:在相机里设置触发信号去抖(debounce)时间,一般设10-50μs就够了。

坑二:编码器分辨率与相机行频不匹配

我遇到过一个人,编码器分辨率设得特别高,结果相机行频跟不上,图像直接断层。后来把编码器分辨率降了一半,问题解决。记住:行频 = 分辨率 × 速度,这个公式要刻在脑子里。

坑三:Z相没用对

增量式编码器的Z相是每转一个脉冲,用来归零。如果做多圈扫描,Z相可以用来对齐每圈的起始位置。但很多人把Z相当普通触发信号用,结果每圈开始的位置都在漂。

我的建议:调试阶段,先把编码器信号接到示波器上,看A/B/Z三路波形。确认A/B相位差90度,Z相脉冲宽度正常。这一步花10分钟,能省你后面几小时。