TMR编码器可以转到 40000rpm,是"跟得上"不是"测得准",高速下输出延迟有可能先吃掉 1.2°

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

TMR编码器可以转到 40000rpm,是"跟得上"不是"测得准",高速下输出延迟有可能先吃掉 1.2°

TMR3111D 标称 40000rpm,是"跟得上"不是"测得准",高速下输出延迟先吃掉 1.2°

晚上十点半,微信弹出一条转发。

是老周,做四足的,甩给我一条多维科技(MDT)7 月 1 日的新闻:新的 TMR 磁旋转编码器 IC,型号 TMR3111D,通稿第一行就是那个数字,转速上限 40000rpm。他问我一句:为什么最近厂家都在扎堆做 TMR。

我顺手回了俩字:精度高。

发完就有点后悔。这答案太糊弄了。而且看着那个 40000rpm,我想起去年那台主轴。

TMR编码器可以转到 40000rpm,是"跟得上"不是"测得准",高速下输出延迟有可能先吃掉 1.2°

零速台架标得漂亮,一上高速角度整体滞后

01 那台主轴,零速标得漂亮,一上高速就漂

高速电主轴样机,目标 30000rpm,PMSM,4 对极,轴端一颗上一代的高速磁编,标称也是 40000rpm 那一档。

台架标定我盯着做的。零速、分度停点,一圈 24 个点扫下来,残差 ±0.05°,曲线干净得像教科书。签字,装机。

跑到 24000rpm,电流环开始抖。

不是抖一下。是持续的力矩纹波,电机温度往上爬,效率比仿真掉了小两个点。降回 3000rpm,纹波没了;再拉到 24000,纹波又回来。

我第一反应是标定没标好。

拆下来回台架,零速复测,还是 ±0.05°。台架上它就是准的。

台架骗了我。

02 台架为什么骗我,这里得说清楚

台架标的是 INL,是几何误差。零速下你能量到的,只有"这个轴位置读出来偏了多少",这个偏差跟转速无关,是磁栅刻画、偏心、非线性留下的,你可以拿多项式压掉。

台架量不到的,是任何跟速度有关的项。

因为标定转速趋近零。所有形如"角速度乘以某个时间"的误差,在零速那一刻都被乘成了零。你在台架上,物理上就看不见它。

换句话说,我那 24 个点扫出来的 ±0.05°,是这颗编码器的静态几何精度,一个真实存在、但只在低速成立的数。我拿它当成了"这台机器的精度",错就错在这。

03 我第二反应是磁铁装配,用一条判据排掉了

离轴的东西,气隙、跳动、偏心,任何一个松了都会在高速甩出来。

我拿千分表测轴端跳动,3 个丝。气隙用塞尺配高斯计对了一遍,在手册窗口里。磁铁牌号、充磁方向、偏置半径都对。

但我没光靠"看起来都对"就放过它。装配误差和延迟误差,在数据上有一条干净的判据能分开。

装配、偏心、跳动,产生的是锁在轴位置上的几何误差:轴转到某个角度,误差就是那么大,每转一圈重复一次,是个 1 次谐波。它在 3000rpm 和 24000rpm 下,同一个轴角位置量到的误差是一样的。它跟转速无关,只跟轴转到哪有关。

延迟误差正相反:它不锁轴位、零速为零、随转速线性长,只跟角速度有关。

这两条特征是对着干的。所以我把示波器挂到编码器的 SPI 上,一边升速一边读绝对角,另一路挂光栅做基准。

零速,两条线重合。升到 24000rpm,编码器这条整体滞后基准一个固定角度,我把转速翻一倍,滞后角也差不多翻一倍。

三条全指向延迟,没有一条指向装配。装配排掉。

04 群延迟那 5μs,不是玄学,是滤波窗除以采样率

我一直在找"标定误差",可这压根不是标定的事。是延迟。

一颗磁编出一个读数要走一条链:TMR 前端、ADC 采样、CORDIC 解角、数字滤波、协议吐出。这一路攒下来是输出延迟,datasheet 上有的写传播延迟,有的写群延迟。

通稿没印这个数。我找 FAE 追,对方给了个群延迟,大概 5μs。

这 5μs 花在哪,值得拆开看,因为拆开你就知道它没法靠"换个更强的前端"省掉。

TMR 前端是模拟量,响应在纳秒级,忽略。ADC 一次转换,看架构,微秒上下。CORDIC 是固定流水线,几十个时钟跑在几十兆上,零点几微秒。

大头在数字滤波。

想从一个有噪声的前端上刮出干净的高位读数,唯一的办法是多采几个点做平均。一个 N 抽头的滑动平均,是线性相位,它的群延迟就是 (N-1)/(2·fs)。

拿昆泰芯那颗手册上写的 2M SAR ADC 打比方,fs = 2MSPS。

τg = (N−1) / (2·fs)
N−1 = 2 × 2e6 × 5e-6 = 20
≈ 21 抽头平均窗 → 5μs

5μs 就是这么来的:大约 20 个采样点,除以 2M 的采样率。一个滤波器长度的问题,没有任何神秘的地方。

05 把这 5μs 乘上角速度,账当场就出来了

滑动平均是线性相位,群延迟对频率是个常数。所以轴角的滞后就是一个纯延迟:滞后角 = 角速度 × 群延迟。群延迟不变,滞后角对转速就是线性的。示波器上那个"翻一倍速、滞后翻一倍",就是这条线。

把速度换出来。24000rpm = 400 转/秒 × 360° = 144000 °/s。目标 30000rpm 是 180000 °/s,标称 40000rpm 是 240000 °/s。

滞后角 = 角速度 × 5μs

24000rpm → 0.72°
30000rpm → 0.9°
40000rpm → 1.2°

TMR编码器可以转到 40000rpm,是"跟得上"不是"测得准",高速下输出延迟有可能先吃掉 1.2°

延迟不变,滞后角随转速线性长:24000rpm × 5μs = 0.72°

我台架上辛辛苦苦标进去的 ±0.05°,在这个 0.72° 面前,连零头都不够。

我盯着这个 0.72° 看了半天。签字那天我以为我交的是一台 ±0.05° 的机器,实际交出去的是"零速 ±0.05°、24000rpm 下先漂 0.72°“的机器。

准不准,早在我选择零速标定的那一刻就被定死了,我却一路以为是芯片不行。

06 顺手把另一个坑也算了:分辨率和延迟是指数挂钩的

既然延迟大头是那个平均窗,那我要更高的分辨率,就得开更大的窗,延迟就更大。这两件事不是各自独立的两行指标,是一个滤波器的两端。而且挂得比想象的紧。

平均 N 个独立采样,噪声按 √N 降,有效位数涨 0.5·log₂N。想多榨 1 个有效 bit,N 要乘 4。想从 20-bit 榨到 24-bit,多 4 个 bit,N 要乘 4⁴ = 256。

群延迟正比于 N。也就是说,你在头条多看到的那 4 个 bit,背后是 256 倍的群延迟。静态那串好看的位数,和高速那笔藏起来的延迟,不只是同源,是指数换来的。

这也是为什么"高分辨率磁编"在高速场景要格外小心:它那个漂亮的位数,本身就是拿延迟换的。

07 更狠的是,这 0.72° 到换向那里还要再乘一次

编码器测机械轴角。FOC 要电角度,电角度 = 机械角 × 极对数。

4 对极。机械滞后 0.72°,到换向就是 0.72 × 4 = 2.9°。满速 40000rpm 那 1.2°,换向端 4.8°。

但先别急着把纹波全赖给这个 2.9°。得说清它到底怎么坏事,不然又成了泛泛而谈。

一个恒定的电角度偏置 ε,FOC 按错角度做逆 Park,产生两件事:一是实际力矩打了个 cos ε 的折扣,4.8° 对应 cos = 0.9965,掉 0.35%;二是灌进一路 iq·sin ε 的 d 轴电流,4.8° 对应 sin = 0.084,8.4% 的电流拐去做了无用功,要维持同样力矩就得把电流抬 1/cos ε,铜损涨 1/cos²ε。

注意,这两件事在恒速下都是稳态的。掉力矩、发热、效率降,是它们干的。这解释了我那台电机温度往上爬、效率掉两个点。

但恒定偏置本身不产生纹波。纹波是另外两条叠上来的。

一,转速根本不恒定。速度环有波动 δω,而 ε = p·ω·τ,转速一抖,电角度偏置就跟着抖,力矩跟着抖。转速越高,同样的 δω 抖出来的力矩纹波越大。

二,编码器每个电周期里那点 INL 谐波,被这个滞后搬了相位,直接落进力矩环,在电频率的整数倍上现形。

我那台纹波的频率跟着电频率走,相位跟转速对得上。就是这两条。极对数越高乘得越狠,只要不是 1,这笔乘法就一直在替延迟放大误差。

08 那天晚上我把三家的 datasheet 摊在桌上

既然是延迟,我就把手边三家纯 TMR 数字编码器的 datasheet 都翻到那一行。结果有点出乎我意料:延迟这行,各家其实都印了。真正拉开差距的,不是印没印,是印的哪一种延迟、以及你有没有把它乘成角度。

器件级多维 MDT,TMR3110 / TMR3111D。我本来以为多维只会在通稿里喊 40000rpm,翻到 TMR3110 的 datasheet 才发现它白纸黑字印着:角度输出延迟 <2μs,重复性 <±0.05°,角度误差 ±0.5°。延迟它给了,还给得挺低。坑不在它藏没藏,在你读到那 <2μs 时有没有顺手乘一遍角速度。40000rpm 是 240000 °/s,×2μs = 0.48°。这 0.48° 正好是它那 ±0.5° 角度误差的一整份,是重复性 ±0.05° 的近十倍。这颗芯片高速下的角度,几乎全被它印在角落那行 <2μs 决定,而不是被那串亮眼的 23-bit、±0.05° 决定。数字全在同一页上,你只是没把延迟那行乘出来。

系统级昆泰芯 KTM5900 / KTM5910。24-bit,在轴精度 ±0.025°,标称最高 18 万 rpm,也印了延迟,但印的是另一种:“系统延迟低至 0.5μs”。数字比多维那 <2μs 还小,可我打电话一问,那是一个机器狗 demo 的闭环响应时间,系统级的,跟 datasheet 里多维那种器件级"角度输出延迟"不是一个测法。两把尺子。0.5μs 和 <2μs 摆一起看着像昆泰芯赢,其实没法直接比,比了就上当。

器件级iC-Haus iC-TW39,德国的。片内 TMR,24-bit,ABZ 最高 65536 CPR。它手册里那行直接印着:latency 1.5μs。旁边还印了 INL ±0.15°、位置抖动 ±2% @2500 CPR。

我盯着 iC-TW39 这组数看了一会儿。1.5μs 的延迟配 ±0.15° 的 INL。它的 INL 比昆泰芯那 ±0.025° 大了快一个数量级,这不是它做得差,这正好是上一段那条指数关系的反向验证:它把平均窗做短、拿到 1.5μs 的低延迟,代价就是少榨了几个 bit、INL 松下来。它在同一张纸上,把"我延迟低、静态精度让一点"这笔交换摆给你看了。

三家翻下来,我原以为的"谁藏谁露"根本不是重点,延迟这行大家都印了。真正的分野是两条。一,印的是器件级的角度输出延迟(多维 <2μs、iC-Haus 1.5μs),还是系统级 demo 的闭环响应(昆泰芯 0.5μs),不问清定义就横着比,必错。二,也是更要命的,印出来你也得自己乘一遍角速度。<2μs、1.5μs 摆那儿看着都小得能忽略,可乘上 40000rpm 就是 0.48°、0.36°,全都盖过它们自己那串 ±0.05° 的静态数字。头条那个 rpm 谁都敢标大,datasheet 那行延迟其实也都给了,就差你有没有把它乘成度。

09 换成 TMR,这行账也躲不掉

我那台踩坑的是上一代霍尔的。你可能会想,换 TMR 是不是就没这问题。

不是。

延迟大头在那级数字滤波,不在前端。TMR、AMR、霍尔用的是同一套数字后端。MPS 那颗霍尔的 MA732 印的是恒速典型延迟约 10μs,麦歌恩那颗 AMR 的 MT6835 印的是 2 到 10μs,跟 TMR 的群延迟落在同一个量级,就因为它出在大家共用的滤波器上,跟前端是什么磁阻无关。

换 TMR,你换到的是更强的信号、更小的温漂、更低的功耗、能离轴,这些都真。老周问"为什么都在做 TMR”,答案是这一整组,不是单一精度。但你没换掉那级滤波器,也就没换掉这笔延迟账。

10 还有件事我到现在没想明白

后来我知道有的芯片把延迟在片内补掉,做法是拿上一拍的转速往前线性外推一格,恒速下能把残余压到 ±2μs 上下。主轴匀速段确实好了很多。

可这台每个循环都要从 0 冲到 30000 再刹停。升速降速那两段,转速一直在变,上一拍的转速代表不了这一拍。外推在加速度上是失效的:它补掉的是 ω·τ 这一阶,补不掉 (dω/dt)·τ 这一项。我拿光栅比,加减速段的滞后照样在,只是匀速段被补平了,一眼看不出来。

补偿没有消掉延迟,是把这笔账从速度项挪到了加速度项。

那加减速这段的延迟到底拿什么去补,二阶外推会不会把噪声也一起放大到不能用,我现在还没有一个敢上产线的答案。

反正从那台主轴之后,我验收表上多了一行:不签零速那一个数,要在目标转速上拉一条角度-转速曲线,拿外部基准比完再签。

老周那条微信,我后来补了一句回过去:TMR 值得上,但你先翻到它延迟印在第几页,别只盯着那个 40000rpm。

◆ ◆ ◆

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

关注公众号「如是有为」

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