磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

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

磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

前几天有个朋友在调试一台伺服关节,选的是 AMS 的 AS5147。参数表上写得清清楚楚:14 位分辨率,SPI 接口,360° 全范围角度输出。

接上单片机,把寄存器读出来,算角度——不对。数字一直在末三位跳,做个标准差一算,有效位数撑死了不到 11 位。换了块板子,同样。上了屏蔽罩,加了去耦电容,末三位还是跳。

他想不通:“14 位 ADC 在里面,凭什么只有 11 位拿得出手?”

答案不在那行"14-bit"的粗体字上。在整个信号链的噪声预算上。

01

THE LAST GATE

你看到的 14 位是最后一道门的宽度,不是屋里的安静程度

用一个比喻把这个道理讲透。

一间录音棚的门上写着"12 比特音频采集"——那是这道门的宽度,门背后有一整条拾音链:话筒本底噪声、前置放大器嘶声、线缆感应干扰、AD 转换的量化台阶,最后才是那 12 位数字输出。任何一级嗓门大过门宽,录下来的东西就会末位跳舞。

磁编码器的信号链完全一样。从磁铁旋转到 SPI 输出的角度值,中间要过五级:

1

传感元件

(AMR 电阻桥或 TMR 结)把磁场方向变成微小电压

2

前端放大器

把这微伏级信号放成伏特级

3

ADC

把模拟电压变成数字码

4

数字域 CORDIC/反正切

从两路数字码算出角度

5

接口输出

把角度打包成 SPI 帧

每一级都在往信号里塞噪声。ADC 只是其中一级。门再宽,屋里吵,录出来还是糊的。

磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

从磁铁到 SPI,信号要过五级——每一级都往信号里塞噪声(红箭头)。门再宽(14 位),屋里一吵,出来只剩 11 位。(原创示意图)

这就是为什么 AS5147 标 14 位,到手有效 11 位——不是 ADC 虚标,是前三级的噪声在 ADC 之前就已经把信号质量拉到只有 11 位的水平了。ADC 只能如实把"含噪声的信号"转成"含噪声的数字",它没有净化的能力。

02

THE PHYSICAL FLOOR

第一口咬掉分辨率的是传感元件自己——AMR/TMR 电阻里藏着一个物理律

先从最前面开始。

磁编码器的核心是下面这张图。两列正交的磁阻条(AMR)或隧道结(TMR)铺在硅片上,转轴上的永磁体在面内转一个角度 θ,AMR 条的电阻跟着 cos²θ 变、TMR 跟着 cosθ 变。把电阻变化搭成惠斯通电桥,差分管脚就输出两路正比于 sinθ 和 cosθ 的电压。

磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

磁编码器怎么把角度变成电压:永磁体转角 θ,AMR/TMR 电阻桥输出两路正比于 sinθ、cosθ 的电压。(原创示意图)

这步看着干净,但物理律不跟你商量。任何电阻——不管是 AMR 的坡莫合金薄膜还是 TMR 的 MgO 隧道结——通电就在发热,发热就产生 Johnson 噪声。公式简单得残忍:

vn = √(4kTRB)

k 是玻尔兹曼常数,T 是绝对温度,R 是电阻值,B 是带宽。对于一颗典型 AMR 桥路:1 kΩ 的桥臂电阻,带宽 1 MHz,室温下只有约 4 μVrms 的噪声。听起来可以忽略。但你真正要的是信号——桥路输出在满磁场下通常在 520 mV 量级(视供电和材料)。信号只有几毫伏,噪声就有几微伏,信噪比 6070 dB 的水平,撑死了 10~11 位 ENOB。这是物理律写的天花板,跟后面用什么 ADC 没关系。

TMR 更有利一些:TMR 结的 ΔR/R 可达 100%~200%,比 AMR 的 2%~4% 高出两个数量级,因此信号幅度大得多,信噪比起步就高一截。但 TMR 也有自己的软肋——隧道结是纳米级结构,低频 1/f 噪声比 AMR 显著,长时间静止时会悄悄漂。

记住一件事:不管你后面接 14 位 ADC 还是 24 位 ADC,传感元件的输出信噪比,已经锁死了有效分辨率的上限。

03

THE AMPLIFIER TAX

前端放大器把信号拉上来,也把自己的噪声推下去,但推不干净

信号太弱怎么办?放大。AMR 桥路几毫伏的信号没法直接喂 ADC(通常要 2~5 V 满量程),中间必须插一级可编程增益放大器。但放大器自己也有输入噪声——电压噪声密度,通常单位 nV/√Hz。

一颗像样的放大器,输入电压噪声可能在 510 nV/√Hz。带宽 1 MHz 累积下来,RMS 噪声约 510 μV——跟 AMR 桥路本底噪声差不多量级。换句话说,放大器噪声和传感器本底噪声在一个数量级上会师了。两路不相关的噪声按平方和叠加,总噪声涨了 40%,等效 SNR 又掉将近 1 位。

更微妙的是电流噪声。放大器输入端往里看,还有个输入偏置电流在流,流过桥路电阻就把电流噪声变成了电压噪声。低频下电流噪声密度 pA/√Hz 级似乎无害,但乘以 1 kΩ 桥臂之后,贡献不亚于电压噪声本身。

所以放大器这事,你选它是因为信号太小,选完发现它自己也留了一笔噪声账单。这账只能尽量压——选低噪声放大器、限制带宽、做差分输入抵消共模——但压不没。

04

THE CONVERTER FLOOR

ADC 不是最后一堵墙,量化噪声和基准漂移合起来又多咬一口

前置信号好不容易放大到伏特级,交给 ADC。终于轮到那行"14 bit"登场了。

理想 ADC 的量化噪声公式是

q∕√12

(q 是 LSB 步长),14 位 ADC 的 LSB 是 2.4 V ∕ 2142^{14} ≈ 146 μV,RMS 量化噪声约 42 μV。如果前面信号链路已经贡献了 RMS 噪声 15~20 μV(折合到 ADC 输入端),那总 RMS 噪声约 46 μV,SNR ≈ 94 dB,ENOB ≈ 15.3 位——看起来 14 位 ADC 本身不是瓶颈。

但上面用的数字是"理想"的。真实的 SAR ADC 还有几个吃位数的机制:

kTC 噪声:采样电容 C 通过开关电阻 R 充放电,开关热噪声存储在电容上,等效 RMS = √(kT∕C)。C 小了噪声大,C 大了速度慢。在 2 MSPS 速率下,片上采样电容被面积限死在几 pF,kTC 噪声轻松到百 μV 量级。

基准电压漂移:ADC 参考电压随温度漂 10~50 ppm/°C,−40°C 到 125°C 跑一圈,参考电压变了,每一个 LSB 的物理含义跟着变。这不是随机噪声,但在温度扫描里等同系统性误差,最后照样吃掉有效 bit。

DNL/INL:微分非线性和积分非线性让台阶不均匀,尤其码字跳变点附近,量化误差远大于理想的 q/2。

把这些一叠加,一颗标称 14 位的 SAR ADC,实际 ENOB 在 11~12 位之间——跟开篇那个朋友测出来的数字完全对得上。AS5147 本身是一颗好芯片,但它的有效分辨率不是被 ADC 位数定义的,是被前面整个模拟前端定义的。

05

THE DIGITAL TRADE

数字域还有一道坎:你看到的"更高位"是滤波换的,不是白来的

前面几条讲的是模拟端的噪声。现在信号已经数字化了,sin/cos 两路数字码都进了 DSP,atan2 一算,角度出来了。

但事情还没完。

很多磁编码器标称的输出分辨率远高于内部 ADC 位数——比如 KTM5900 内部是双 16 位 SAR ADC,对外标称 24 位角度输出。MLX90395 是 16 位。iC-Haus iC-MU 是 18 位。

这多出来的位数是从哪变出来的?两个办法:CORDIC 迭代把反正切的浮点精度做满,和数字域过采样加低通滤波。前者的原理是反正切计算可以无限逼近——如果 sin/cos 两路信噪比够高的话。后者的原理是用 N 次采样平均,每四倍平均多 1 位 ENOB。

但这里有个骗人的水龙头:过采样增益只在噪声是白噪声的条件下成立。磁编码器前端噪声里 1/f 分量不白,多平均几次它不走。过采样加滤波器换来的只是白噪声那部分的位数,1/f 和温漂这些根本不吃平均。而且低通滤波一上,群延迟就上来——这个账之前在其他文章里交代过足够多次,不再重复。

一句话:多出来的"分辨率"是时间换的,不是白送的。滤波器越重,延迟越高。最终落在伺服控制环路里,能用的有效位数远低于静态台架测试的数字。

CASE STUDY · AS5147

回到那个 14 位朋友——噪声预算四步账,把 ENOB 算穿

现在回头看 AS5147。从磁铁到 SPI 寄存器,噪声怎么一层层咬的:

磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

14 位是怎么被啃成 11.3 位的:AMR 桥噪声、放大器噪声、ADC 量化+kTC 各咬掉一口。(原创示意图;数字为典型量级示例,非实测)

这就是为什么 14 位参数拿在手里只剩 11 位。不是哪个人偷工减料,是物理律不商量。

TMR 方案(KTM5900)的账就好一点:TMR 信号幅度大一个数量级,桥路 SNR 天然高约 1518 dB,等效吃掉的位只有 11.5 位。加上内部双 16 位 ADC + CORDIC 迭代逼近 + 过采样,标称 24 位输出的背后是这一整条信号链协同顶上去的,不是某一级单打。INL ±0.025° 的指标,前提是前面每一步的噪声预算都算到了小数点后面。即便如此,有效位也到不了 24——KTM5900 的数字滤波深度可以配置,低延迟配置下 ENOB 会收紧。没有一颗芯片能逃出噪声预算那张表。

FINAL TAKEAWAY

最后沉一句带走的话:

磁编码器的精度不是被任何一行参数表上的数字定义的,是被信号链上每一级噪声预算加起来的总和定义的。先建预算再选 ADC 位数,而不是反过来。

KNOWLEDGE CARD

收藏 · 转发

知识卡片

磁编码器 14 位 ADC 不等于 14 位有效角度:信号链上每一级都在偷你的分辨率

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

关注公众号「如是有为」

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