光学编码器 做到 10MHz,不是炫技,是给高速扫描留命

首发于公众号「如是有为」 · 查看原文

光学编码器 做到 10MHz,不是炫技,是给高速扫描留命

一、别急着问多少 bit,先问这个角度是不是“迟到”了

我以前以为,光学编码器选型的核心就是分辨率。bit 数越高越好,插补越细越高级。宣传页上能写 20bit、22bit、24bit,听起来就比 12bit、14bit 靠谱。

后来我在高速扫描项目里踩过坑,才慢慢承认一件事:真正决定系统能不能稳的,不只是分辨率,而是输入频率、延迟预算和相位余量。换成现场语言就是:你拿到的角度再精细,如果它已经“晚了几微秒”,在高速运动里,它就不是当前位置,而是过去的位置。

控制器拿着过去的位置去补偿现在的误差,就像开车时一直看后视镜修方向盘。慢速时还能凑合,高速一上来,系统就开始抖、啸叫、追不上,甚至方向判别都晚一拍。很多人第一反应会说:几微秒而已,有这么夸张吗?有。尤其是在高速扫描轴、扫描镜、旋转棱镜、轻量化平台这类场景里,几微秒不是小数点,它会直接变成角度误差。

所以我现在看光编,第一句话不会问“多少 bit”。我会先问:这个位置,是几微秒前的位置?

二、参数表最会骗人:分辨率高,不等于闭环稳

有一次我看光编方案,把几份资料摊在桌上,感觉特别明显。一份是德国 iC-Haus 的 iC-PT 系列,重点是高速输入和低延迟解算;一份是雷尼绍 VIONiC RESM20 光栅系统,讲的是高速、高细分、低细分误差和实际读数能力;一份是博通 AEDR-850x 反射式增量编码器,内部集成 LED 光源和光电检测电路,输出 A/B 正交数字信号和 Index,适合小型运动控制里的短行程、低成本位置反馈;还有一份是德州仪器 AM26C32,看起来只是四路差分线接收器,但线缆一长、干扰一上来,A/B/Z 边沿到底干不干净,接收器门限、滞回、传播延迟就会变得很现实。雷尼绍 VIONiC 官方资料提到 2.5nm 级分辨率、最高 50MHz 时钟率和最高 12m/s 速度;博通 AEDR-850x 是三通道反射式增量编码器,集成 LED 光源和光电检测电路;德州仪器 AM26C32 数据手册给出的典型传播延迟是 17ns。

这几份资料放在一起,你会发现一个问题:编码器系统从来不是一个“分辨率参数”就能说清的东西。它至少有四段。

第一段是光电传感和模拟前端。光斑照到码盘,透射或者反射之后,光电二极管阵列把光强变化变成电流,这个电流通常很小,先要经过跨阻放大,再做偏置、幅值、相位、失调、噪声处理。你看到的 sin/cos,不是天然完美的正弦余弦,它背后有光源亮度、码盘污染、间隙、倾斜、光电阵列匹配、暗电流、放大器噪声一堆东西。

第二段是插值和角度解算。如果是增量式 A/B 相,要做方向判别、边沿计数、Index 对齐;如果是模拟 sin/cos,要做 arctan、CORDIC、查表、线性化、细分;如果是绝对式,还要把粗码、细码、扇区、游标关系拼起来。这里每一步都可能引入延迟。

第三段是接口和传输。并口、SSI、BiSS、CANopen、EtherCAT、A/B/Z 差分输出,看起来只是“怎么把数传出去”,但实际都会吃时间。差分线的接收门限、线缆反射、终端匹配、共模干扰、隔离器传播延迟,都会改变边沿到达控制器的时刻。第四段是控制器和驱动器,MCU、FPGA、DSP、伺服驱动器的采样周期、PWM 更新、任务调度、DMA、缓存、插补周期,都会继续吃掉你的时间预算。

所以参数表里最容易误导人的地方,不是它写错了,而是它把不同维度的东西放在同一个页面上,让你误以为“分辨率高”就等于“系统稳”。但高速闭环真正要问的是:角度够不够细是一回事,角度有没有迟到是另一回事。

三、5 微秒到底有多贵?6000 rpm 下先算一笔账

我们拿一个粗糙但够用的公式感受一下:角度误差 ≈ 角速度 × 总延迟。比如一个扫描轴跑到 6000 rpm,也就是每秒 100 转。一转 360 度,所以角速度是 36000 度/秒。如果编码器前端、方向判别、接口传输、控制器锁存加起来,延迟是 5 微秒,那么角度误差就是:36000 × 0.000005 = 0.18 度机械角。

0.18 度听起来好像不大。但如果这是扫描镜,存在 20 倍左右的光学杠杆或等效放大路径,那么光斑角度偏差可能被放大到 3.6 度量级。这时候你再拿 20bit 或 24bit 分辨率去安慰自己,就有点尴尬了。

20bit 一圈大约是 104 万个计数,一个 LSB 大约是 360 / 2²⁰ ≈ 0.00034 度。24bit 一圈大约是 1677 万个计数,一个 LSB 大约是 360 / 2²⁴ ≈ 0.0000215 度。可 5 微秒带来的时间误差,已经是 0.18 度机械角。也就是说,你的位置数值可以细到小数点后很多位,但系统真正用到控制环里的那个角度,已经因为延迟偏了几百、几千,甚至上万个 LSB。

这就是我后来特别反感“只谈 bit 数”的原因。高分辨率只能告诉你尺子刻得很细,不能保证你量的是此刻的位置。

四、10MHz 不是为了好看,是为了边沿别把控制器喂撑

那 10MHz 输入频率到底有什么用?很多人看到 10MHz,会下意识觉得这是参数炫技:“谁家的码盘会输出这么快?现场真用得到吗?是不是厂家为了好看写的?”如果你做的是低速旋钮、普通调速电机、慢速定位平台,可能确实用不到。但高速扫描不一样。

10MHz A/B 相输入,意味着边沿周期只有 100ns 量级。这个数字不是为了让你每天满频跑,而是为了在速度上来、细分变高、边沿密度变大时,前端还能有余量。余量这个东西,在实验室低速转一下看不出来,它通常在三个时刻暴露问题。

第一个时刻是加减速段。速度变化最快,方向判别和相位提取最容易晚一拍。你以为是 PID 参数没调好,其实可能是位置反馈本身就带着延迟。尤其是扫描轴加速度很高时,位置误差不只是“角速度 × 延迟”,还会叠加加速度项。今天你看到的是相位滞后,明天换个运动轨迹,可能就变成跟随误差尖峰。

第二个时刻是方向反转点。A/B 相边沿密集,噪声、毛刺、滤波、迟滞都会影响方向判断。输入频率余量不够时,系统会更依赖重滤波。滤波一重,延迟又上来了。这里有个很烦人的现场现象:你把滤波打开,低速抖动变好了;你把速度拉上去,高速跟随变差了;你把滤波关掉,高速相位好一点,低速毛刺又回来了。最后调来调去,大家开始怀疑机械、怀疑电机、怀疑驱动器。但根因可能是前端边沿质量和处理余量都不够,系统只能在“抗噪”和“低延迟”之间来回牺牲。

第三个时刻是高速扫描稳定段。看起来速度恒定,但控制器仍然在不断修正相位误差。反馈链路慢一点,补偿就变成“追过去的角度”。轻则跟随误差变大,重则闭环抖动。所以 10MHz 不是一个“我能跑满”的数字,它更像是给系统留出来的刹车距离。你平时不一定用完,但关键时刻,没有它就撞墙。

五、昆泰芯 KTO9512:24bit 背后不是一个数字,而是一条光电信号链

再看国产光编芯片,就不能只用“国产替代”四个字一笔带过。比如昆泰芯 KTO9512,公开资料里写的是“游标绝对值光学旋转编码器芯片”,内部集成高清相位阵列光电传感器,提供正弦/余弦信号,后级可以继续做高分辨率插值;昆泰芯官网还提到,KTO9512 采用三通道 Nonius 游标插值方式,可实现最高 24 位单圈位置分辨率,并列出 26mm 光栅码盘、2bit 格雷码道、512CPR/510CPR/480CPR 三码道游标原理、6 对模拟差分输出、1MΩ 互阻增益、100µs 上电稳定时间、-40℃ 到 +125℃ 工作温度等信息。

光学编码器 做到 10MHz,不是炫技,是给高速扫描留命

如果只看宣传页,最容易记住的是“24bit”。但我看这种芯片时,反而不会先看 24bit。我会先看四个东西:三通道 Nonius 游标、512/510/480 CPR、2bit 格雷码、sin/cos 差分输出。这几个词合在一起,才是工程问题的入口。

为什么要做三通道 Nonius 游标?因为单一码道只能告诉你“周期内位置”。你知道自己在一个周期里的相位,但不知道这是全圆里的第几个周期。Nonius 游标的思路,是用几个刻线数略有差异的码道,让它们的相位差形成一个更长的“拍频周期”。512、510、480 这三个 CPR 放在一起,就不是简单多放几圈码道,而是用不同周期之间的相位关系来解绝对位置。

这个结构的好处,是可以在有限码盘直径里得到很高的单圈绝对分辨率。但它的工程代价也很清楚:三路码道的相位一致性要好。光电阵列、码盘偏心、轴向间隙、径向跳动、倾斜安装,都会让三路 sin/cos 的幅值、相位、偏置发生变化。单路 sin/cos 有误差,你还能靠椭圆校正、幅值归一化、相位补偿去修;三路 Nonius 游标同时参与绝对位置解算时,每一路的误差都会进入“粗位置”和“细位置”的一致性判断。

还有码道间串扰。26mm 码盘上放 512/510/480 CPR,再加格雷码道,空间并不奢侈。码道间距、光斑尺寸、光学窗口、阵列位置,都会影响串扰。串扰小的时候,它只是谐波;串扰大了,Nonius 游标相位关系就会变脏。你后面插值越高,越容易把这种脏东西插成“看起来很精细的错误”。

sin/cos 差分输出也不是终点,而是另一个起点。它给系统工程师留了很大自由度:可以接后级 ADC、细分器、FPGA 或专用处理芯片,自己做 arctan、插值、校正和锁存。但灵活也意味着责任转移了。后级 ADC 采样率够不够?sin/cos 两路是否同步采样?三通道之间是不是同一个采样时刻?ADC 前端 RC 滤波会带来多少相位延迟?CORDIC 或查表插值用了几个时钟周期?绝对位置拼接是在当前采样点完成,还是跨了几个控制周期?

这些问题没有回答清楚,“24bit”就是一个静态分辨率数字。它能说明尺子刻得细,不能说明高速运动时你拿到的位置没有迟到。

六、A/B 相和 Nonius 游标不是一回事,但最后都输给时间

这里要讲清楚:昆泰芯 KTO9512 这类游标绝对式光编,和 A/B 相 10MHz 不是完全同一条链路。A/B 相高速输入,讨论的是边沿密度、方向判别、计数器吞吐和边沿延迟;KTO9512 这类输出 sin/cos 的游标绝对式方案,讨论的是模拟信号质量、三通道相位关系、后级采样同步、插值算法和绝对位置拼接延迟。

但它们最后会在同一个地方汇合:控制器拿到的位置,到底是不是“当前的位置”。

比如 KTO9512 输出 6 对模拟差分信号,这对抗干扰是有好处的。差分输出能提高共模噪声抑制,也方便后级在工业现场做板内或板间传输。但差分模拟链路不是没有代价,后面大概率还要接 ADC,ADC 前面可能有抗混叠滤波,滤波器如果三通道不一致,会产生通道间相位差。

ADC 如果不是同步采样,三通道相位会在高速旋转下被时间错位污染。假设三通道不是同一瞬间采样,而是轮询 ADC,通道间隔哪怕只有 1 微秒,在 6000 rpm 下也是 0.036 度机械角。放在 24bit 的 LSB 尺度上,这已经不是“小误差”。

这还只是采样。后面还有 arctan、offset 校正、幅值归一化、sin/cos 正交误差补偿、谐波补偿。三路 Nonius 游标解出来的粗位置和细位置不一致时,怎么判错?格雷码扇区边界附近,如果模拟相位刚好卡在过渡区,锁存时刻怎么选?上电 100µs 稳定之后,第一次位置可不可信?温度从 -40℃ 到 +125℃,暗电流、LED 光强、放大器偏置、光电流范围变化后,插值表还准不准?

这些都不是宣传页上一个“24bit”能自动解决的。我不是说 24bit 不重要,恰恰相反,高分辨率很难做。但真正能落地的高分辨率,必须带着信号链一起看。码盘、刻线、光谱范围、光电流范围、互阻增益、差分输出、后级 ADC、插值算法、锁存时刻,这些数字比“24bit”更接近工程现场,因为它们会直接影响装配、噪声、带宽、温漂、插值误差和延迟。

七、别用滤波和插值,把问题修成更隐蔽的问题

还有一个经常被忽略的点:输入频率不够,或者模拟链路带宽不够时,工程师往往会用“补丁”去救。比如加滤波。滤波可以让波形好看,但滤波一定会带来相位延迟。你在示波器上看到毛刺少了,控制环里看到的可能是相位余量也少了。

比如加插值。插值可以让数字更细,但插值依赖原始信号质量。原始 sin/cos 的幅值、偏置、相位、谐波、噪声没有处理好,插出来的是“精细的假位置”。比如提高控制器采样率。采样率上去了,但如果前端数据本身已经晚了,控制器只是更频繁地读取旧数据。

再比如换更高 bit 的编码器。这在低速定位里可能有效,但在高速扫描里,如果瓶颈是延迟和边沿处理能力,高 bit 反而会让人误判问题方向。这就像你拍高速运动物体,相机像素再高,快门太慢,拍出来还是糊的。编码器也是一样,分辨率是像素,延迟是快门。你不能只看像素。

八、我的选型习惯:最后都要回到一张延迟预算表

所以我现在更愿意把高速光编系统拆成一张延迟预算表。光电二极管阵列到跨阻放大,多少延迟?跨阻放大器的带宽和相位裕量够不够?sin/cos 前端滤波截止频率设在哪里?比较器整形有没有滞回?滞回会不会在低幅值时带来边沿偏移?

A/B 相方向判别需要几个时钟?CORDIC 或 arctan 插值需要几个周期?三通道 Nonius 游标绝对位置拼接有没有跨周期等待?格雷码和模拟相位是不是同一时刻锁存?差分接收器传播延迟是多少?SSI、BiSS、CANopen 或并口输出一帧要多久?控制器读取位置之后,什么时候进入位置环?位置环算完之后,什么时候更新速度环、电流环和 PWM?

每一项都不一定大,但加起来就会变成闭环里的相位损失。低速时,这张表可能没人看,因为系统慢,误差还没来得及放大。高速时,这张表就是生死线,因为每一微秒都会被角速度放大成角度误差。

这也是为什么我不喜欢把德国 iC-Haus、雷尼绍、昆泰芯、博通、德州仪器这些名字简单放在一张“谁更强”的表里比较。它们不是同一种角色:雷尼绍 VIONiC 解决的是高精度读数、高速运动和低细分误差的问题;德国 iC-Haus 的 iC-PT 解决的是前端信号解算、方向判别和低延迟处理的问题;昆泰芯 KTO9512 解决的是在有限码盘尺寸里,把多通道光电阵列、sin/cos、格雷码和 Nonius 游标绝对位置关系集成起来的问题;博通 AEDR-850x 解决的是小型化、成本、装配空间和基础 A/B/Z 反馈的问题;德州仪器 AM26C32 解决的是传输链路里的边沿质量、共模干扰和接收门限问题。

真正的工程选型,不是问“哪个参数最漂亮”,而是问:在我的速度、线数、线缆、控制周期、温度和噪声条件下,整条链路还能不能按时给出可信的位置?

九、参数表赢了没用,机器现场赢了才算

只要项目里出现高速扫描、高速旋转、轻量化平台、快速反转这些关键词,我就不再先看分辨率。我先算三件事。

第一,边沿频率或等效信号频率。如果是 A/B 相,就算目标转速下的边沿频率,A/B 四倍频后是多少,控制器计数器能不能扛住,差分接收器边沿质量有没有裕量;如果是 sin/cos,就算模拟信号频率,码盘 CPR 乘以转速后,sin/cos 基波频率是多少,前端放大器、滤波器、ADC 采样率、后级插值带宽够不够;如果是三通道 Nonius 游标,就不能只算一路,512/510/480 CPR 每一路的相位都要在高速下稳定,三路之间还要保持时间一致性。

第二,总延迟。从光电信号变化,到控制器真正拿到这个位置,中间到底过了多少微秒?跨阻放大、滤波、比较器、ADC、CORDIC、Nonius 游标拼接、接口传输、控制器锁存,每一段有没有典型值和最坏值?

第三,相位余量。这些微秒在目标角速度下,会变成多少角度误差?放到扫描镜、光路、负载端之后,会不会被继续放大?

只要这三件事算完,很多选型争论就会安静下来。有人还在说“这个 24bit,看起来更高级”。你可以直接问他:24bit 是很好,那 5 微秒延迟在 6000 rpm 下是多少度?三通道 sin/cos 是同一时刻采样的吗?Nonius 游标粗细位置拼接跨不跨控制周期?格雷码边界和模拟相位边界怎么对齐?

现场最怕的不是参数低。最怕的是参数看起来都很高,但它们不在同一个时间维度里。分辨率讲的是空间精度,输入频率讲的是速度承载,sin/cos 质量讲的是插值可信度,Nonius 游标结构讲的是绝对位置展开能力,差分输出讲的是传输抗扰度,延迟讲的是时间真实性,相位余量讲的是闭环还能不能活。

所以,光学编码器输入做到 10MHz,不是炫技。昆泰芯 KTO9512 这种国产游标绝对值光编做到 24bit,也不应该只被写成一个“国产替代”的口号。真正值得看的,是这些器件背后的信号链:光电阵列怎么把光变成电流,跨阻放大怎么保住带宽和噪声,sin/cos 怎么保持幅值、相位和正交性,Nonius 游标怎么把多个码道拼成绝对位置,差分输出怎么穿过噪声环境,后级插值怎么在不增加太多延迟的情况下给出位置,控制器怎么在同一个时间基准下使用这个位置。

这些东西最后都会变成一个很朴素的结果:系统不抖,光斑不飘,位置不追过去,客户现场不用半夜打电话问你,为什么分辨率这么高,机器还是不稳。

这才是工程师真正关心的东西。

不是参数表赢了,是机器在现场赢了。

应作如是观
公众号「如是有为」二维码

关注公众号「如是有为」

微信扫一扫,新文章先在公众号发出。