芯片标的0.02 度"精度""原来不是"精度"! 看看编码器这行各家如何自己造词

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

芯片标的0.02 度"精度""原来不是"精度"! 看看编码器这行各家如何自己造词

那颗芯片标的

0.02 度精度
不是精度

有人扔过来一份 AS5047P 的 datasheet,配一句话:没有线性校准,没有非线性校准,14 bit 分辨率,宣称 1700 rpm 下精度 0.02°,这合理吗。

合理。但那个 0.02° 不是精度。

它在手册里的符号是 DAE1700,Dynamic Angle Error,动态角度误差。这个数跟校准没有半点关系。同一份手册往后翻两页,这颗芯片真正的角度精度写着 ±1.2°。两个数差 60 倍,都印在同一份规格书上,一个叫 Dynamic Angle Error,一个叫 INL。

拆完这一个数之后,我更想说的其实是另一件事:这行的名词,基本是各家自己起的。 你以为你在比参数,很多时候你在比两个不同的定义。

手册自己把公式印出来了,一除就露馅

翻到内页 Page 10 那一节,原文写得清清楚楚:信号穿过模拟前端和数字后端要花时间,这个延迟乘上角速度就产生动态角度误差——

DAE = ω × tdelay

再翻回内页 Page 7 的系统特性表,tdelay_DAEC(做完补偿之后的残余传播延迟)给的是 1.5 到 1.9 µs。

拿这个数去乘:

条件角速度 ω× 1.9 µs手册标称
1700 rpm10,200 °/s0.0194°0.02°
14500 rpm87,000 °/s0.165°0.18°

反过来除也一样:0.02 ÷ 10200 = 1.96 µs,0.18 ÷ 87000 = 2.07 µs。两个转速、两个标称值,反推出同一个时间常数。 这不是巧合,它就是那道除法题的答案。

所以这个数回答的是"输出比真实位置滞后多少",不回答"读数偏离真值多少"。前者是系统性偏差,转速一变它就变;后者才是精度。

真正一眼能看穿的旁证也在同一张表里:ONL(RMS 输出噪声,1σ)是 0.068 度,比宣称的 0.02° 还大三倍多。你单次读一个角度,光噪声散布就把它盖住了,物理上不可能看到 0.02° 这个数。一个是恒速下的系统性滞后,一个是随机噪声的均方根,两个统计口径完全不同的量,并排摆在同一份规格表里。

顺带一提,那行 0.068° 的备注写着 Not tested, guaranteed by design——未经测试,设计保证。

这里没有人造假。手册把定义、公式、条件全写出来了,一个字都没藏。藏起来的只是这些名词各自的含义。

同一件事四个名字

同一个名字两种算法

这行最典型的毛病有两个方向,而且是相反的两个方向。

一个方向是同一件事,各家起各家的名字。

随便挑一个做位置跟踪的人都会碰到的数学对象:一个同时估位置和速度、增益固定的两态递推器。这东西在雷达和目标跟踪领域叫 g-h 滤波器,也叫 α-β 滤波器;在时间序列统计里叫 指数平滑,Holt 线性法、Brown 双指数平滑都是它;在估计理论里,它就是等速模型下增益收敛之后的稳态卡尔曼滤波;在信号处理的口径里,它是"带速度前馈的一阶跟踪器加低通微分器"。

四个学科,四套名字,一样东西。几个工程师从不同的书里学过来,坐在同一张桌子上讨论同一件事,能吵一下午——吵完才发现说的是一回事。

再举一个更贴身的。你在编码器手册上会看到 Nonius(诺尼斯)这个词,德国那几家爱用;也会看到 Vernier(游标),英美资料多;中文资料直接写"游标"或者"双码道差频"。三个名字,一个原理:两条周期不同的刻度,用它们的相位差反推绝对位置。

顺带一个冷知识:Nonius 来自葡萄牙数学家 Nunes,Vernier 来自 17 世纪的法国人 Pierre Vernier,Nunes 的那套还更早。所以这两个名字之争,本质是四百年前就没统一的一件事,一直吵到了今天的编码器规格书上。

另一个方向更麻烦:同一个名字,两种互斥的算法,结果差一倍。

“转速波动率"这个词,国内至少有两套算法在同时流通:

  • 国标系的公式是 (N_max − N_min) / (N_max + N_min) × 100%,分母约等于两倍平均转速,本质是"半峰峰 / 均值”

  • 而大量测试设备商、检测服务商的宣传材料写的是"最大值与最小值差值除以额定转速",这是"峰峰 / 额定",算完还要冠一个 ± 号

同一组原始数据,两套算法,百分比整整差一倍。 两边都自称按标准,两边的公式都没写错,只是没有任何一方在报数时说明白自己用的是哪一套。

比它更常见的错还在后面:很多人拿规格书上的"速度变动率“去要求瞬时波动。那一栏测的是负载 0→100% 或电压 ±10% 前后平均转速的稳态挪动,常见 ±0.01% 量级——是任何伺服都做得到的量,也是任何伺服在瞬时口径下都做不到的量。“转速波动"和"速度变动率”,四个字里差一个字,是两个不同的物理量。

PPR、CPR、LPR

这个 4 倍的坑,全行业公认

如果说上面那些还算专业圈内部的分歧,增量式编码器的线数是连英文世界都公开承认糊涂了几十年的一处。

  • LPR(Lines Per Revolution):码盘上物理刻线的数量

  • PPR(Pulses Per Revolution):每转输出的脉冲数

  • CPR(Counts Per Revolution):正交解码之后每转的计数状态数

正交(A/B 两路)解码,一个周期有上升沿下降沿共四个可分辨状态,所以 CPR = PPR × 4。

问题在于各家用法根本不统一:有的厂商用 CPR 表示 Cycles per Revolution(周期数,那就等于 PPR),有的用 CPR 表示 Counts per Revolution(四倍频之后),还有人把别家叫 CPR 的东西叫 PPR。海外的技术资料对这件事有一句很直白的总结:把 cycles 和 counts 搞混,计算会差 4 倍。

这个坑的实用解法也是现成的,就一句话,问供应商的时候直接甩过去:

“

这个数,是四倍频之前的,还是之后的?

顺带说一句,我见过的规格书里,光是这一处就还能再叠一层坑:某些芯片的线数配置寄存器,实际线数等于寄存器值加一;而同一份手册在讲这件事的时候,“线"和"脉冲"两个词是混着用的,前后自相矛盾。你按手册的一处理解去配,出来的分辨率就差一格;差一格在增量口不致命,一旦这个数参与回零判断或者电子齿轮比,就会变成一个很难查的偏差。

名字里的暗号

比参数表更容易骗人

第一类是原理名。

AMR、GMR、TMR,三个名字里都有"磁阻"两个字,中文更狠,都叫"磁阻效应”。但它们是三种不同的物理机制,各自的角度响应周期、饱和行为、温漂特性、外场耐受都不一样——选型的时候被"磁阻"这两个字带着走,会以为它们是同一类东西的三个档次,其实是三条不同的路。最直接的一个差别:AMR 的本征响应周期是 180° 不是 360°,你拿它做整圈绝对角,必须另外补一个消歧的信息源。

第二类是型号后缀。

这个更隐蔽。我见过不止一家用 xQ1 / xQ2 / xQ3 这种后缀给同一个系列分档,看上去像是车规认证的等级标记。但这类后缀在很多情况下只是温度分档——125℃ / 105℃ / 85℃,是电气规格。而"符合 AEC-Q100"这句话,可能只写在其中一份 datasheet 里。

温度档和车规认证是两回事:AEC-Q100 的核心不是"能在 125℃ 下工作”,而是一整套可举证的流程——应力测试矩阵、批次抽样规则、失效判据、文件包、变更通知义务。温度只是其中一格。跑得到 125℃ 是必要条件,不是"跑完了流程"。

而且认证是有主体的:同一版硅、同一份版图,换一家封装厂、换一条产线、改一个 Bin 判据,认证结论就不再覆盖。所以"这一档过了,那一档是同一颗芯片降档,应该也算过"这个推理,在技术上听着通,在商务上无效——客户审核的时候会当场判不符。

读手册有一条可以迁移的纪律:哪一页写了、哪一页刻意没写,这个落差本身就是信息。 把"未列"当成"同样适用",是替厂商承担了它没打算承担的责任。

第三类是带 ™ 的自造词。

DAEC™、Barber-Pole、各家的 SmartXXX——一个厂商给自己的技术起一个带商标符号的名字,工程上通常是件好事,说明这里确实有独特实现。但它同时也是一次定义权的宣示:这个名词的含义由它定义,它在规格表里代表什么、在什么条件下成立、和别家哪个指标可比,全由发明这个词的人说了算。

所以看到 ™ 的正确反应不是"这家有黑科技",也不是"这是营销话术",而是:去正文里找这个词的定义段,看它的成立条件是什么。 上面那个 0.02°,成立条件就写在定义段里——恒速。

车间那套词和标准那套词

中间没有翻译

上面讲的都还是纸面上的名词。真正到现场,还有一整套平行的语言。

车间里说"抖"、说"叫"、说"爬行"、说"顿挫"、说"飞车"、说"刚性不够"。这六个词对应六个完全不同的物理现象,对应六个完全不同的排查方向,而它们中间没有一个有严格的标准定义。

  • “抖” 从 5 Hz 的低频喘到 2 kHz 的啸叫全都叫抖,机械共振、编码器噪声、增益过高被塞进同一个字里

  • “顿挫” 是一转 N 次的周期性起伏,对应转矩波动,最常见的错是把它当随机噪声去加滤波——滤波对随机噪声有效,对周期性同步扰动可能在带宽附近放大而不是抑制,越滤越糟

  • “爬行” 是低速粘滑,摩擦主导,常被误归罪于编码器分辨率,实际多半是导轨和润滑的问题

  • “刚性” 在驱动器上是一个 1 到 31 的档位,是把一组增益打包成的一个旋钮;而国标里的"静态刚度"单位是 N/rad,是机械量。名字撞车,物理含义毫无关系

这套词里最值钱的一对区分是:上位机曲线上的速度波动,和机械轴真实的速度波动。 前者经过了滤波和差分处理,后者是轴的真实角速度起伏,两者之差可以大到一个数量级。而在车间的语言里,它们共用一个词——“波动”。

我在这份手册上栽过一跤

只因为两个字调了个顺序

写这一节的时候我自己也吃过一次亏。查一份中文技术文档,搜"延迟",一条都搜不到。

于是判断:这份文档里没有这个规格项。基于这个判断,我往下推了三条结论。

后来才发现,那份文档里用的词是延时,不是延迟。两个字调了个顺序,全文检索就一无所获。那三条结论全部作废。

而"延时"和"延迟"这两个词,在中文技术资料里本来就是混着用的——这本身就是本文讲的同一件事,只不过这一次轮到我掉进去。

写出来不是为了自嘲。是因为它和上面讲的是同一个毛病的两面:规格表上的一个符号、一个词、一行条件栏,任何一处没对上,后面推出来的东西再自洽也是错的。 你以为你在比较两颗芯片,其实你在比较两个不同的定义。

拿到一个名词

先问这四句

这个数的统计口径是什么。 典型值、最大值、峰峰值、还是 1σ 的 RMS。两个不同口径的数放在一起比,差三倍是常事。顺手看一眼备注栏有没有 “guaranteed by design”——那意味着它没被逐颗测过。

条件栏里写了什么,没写什么。 带转速条件的角度指标,八成是延迟项;不带转速、只带温度和磁铁摆位条件的,才可能是精度。温度范围、磁铁牌号尺寸、气隙、偏心量,缺一项这个数就换一个含义。而"没写"本身也是信息——尤其是认证、等级、适用范围这类话。

这个数是量出来的,还是从别的量算出来的。 最简单的验证就是本文开头那一步:把同一个符号在两个不同条件下的标称值相除,如果得到同一个常数,那它就是算出来的,你看到的是一道除法题,不是一次测量。

这个词,在对方那里是什么意思。 增量线数问"四倍频前还是后";波动率问"半峰峰还是峰峰、除以均值还是额定";分辨率问"单圈还是含多圈";带 ™ 的词直接去找定义段。这四句里最后一句最省钱,因为前三句问的是数字,这一句问的是数字的含义——含义错了,前三句问得再细也是白问。

这行不会有一个统一的名词表,各家会继续起各家的名字。能做的只是每次拿到一个数之前,先花五分钟确认自己和对方说的是同一件事。 这五分钟挡住的,是选型阶段最贵的那类误会——拿一个延迟指标当精度指标,去对比另一家的真实精度指标,然后得出一个差五十倍的错误结论。

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

关注公众号「如是有为」

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