「霍尔够用了」这四个字有四条前提

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

「霍尔够用了」这四个字有四条前提

总有人问我,一个要加角度/位置检测的码盘,要不要再往上堆一颗更贵的。我通常就一句话:霍尔够用了。磁轴键盘那种场合,一颗 SS49E 一类的小线性霍尔,几毛钱,SOT-23 一个小管子,输出接主控的 ADC 扫一圈,就到头了——没必要上磁编。

可上回有人跟我较真:你凭什么说够用,够用是对谁说的?我卡住了。这句话我说了几十遍,头一回发现自己答不出来第二条。

那天晚上我把这问题带回了工位,摊了一桌子东西:一颗 SS49E、一颗在另一个项目上轮板用的集成磁编、几块不同批次的钕磁、一个能拧气隙的台子。我想列一张"够用条件"的表,列着列着发现不对。这四条条件根本不是四条,是同一个东西折出来的四道光。 它们全指向同一个物理事实,我只是从来没把它说出口。

这篇不是来给"霍尔够用"下结论的。我是想把这四道光,从一条光上,一件一件掰开,算到你面前。

一顿饭的功夫,我先把"角度"这件事彻底否掉了

先说最容易被绕进去的先入之见:你一听到"角度传感器",脑子里是"它告诉我不转了多少度"。线性霍尔不告诉你这个。它告诉你的,是"穿过去那束磁场有多强"。

霍尔元件是个半导体载流子器件。把它放进磁场,垂直穿过芯片的磁场会让载流子被洛伦兹力推向一侧,在垂直电流和磁场方向之间积出一个横向电势差——这就是霍尔电压。公式:

VH=RHIB⊥t.V_H=R_H\frac{IB_\perp}{t}.

其中 RHR_H 是霍尔系数,tt 是霍尔片有效厚度,I 是流过元件的电流,B⊥B_\perp 是穿过去那个磁感应强度的垂直分量。

盯着这个式子看。它正比于 B——一个标量的大小。 磁场转了个方向,只要垂直分量没变,它读出来的数就一模一样。它读的是"这里的场有多强",不是"磁铁朝哪转"。

那为什么你靠转磁铁能让它变?因为磁铁一转,空间磁场的方向变了,垂直分量跟着主角变化。你自以为在读角度,其实在读"角度投影出来的那个大小"。 一个矢量的夹角,被你天真地当成了角度本身。这层窗户纸,是后面四笔账的总开关。

磁编不是"另一种霍尔",它读的根本是另一个量

好,那往上堆的磁编又是凭什么"更准"?很多人以为只是"磁编做了校准、霍尔没做校准",或者是"磁编位数高"。都不是。它读的物理量都不一样。

磁编用的是磁阻效应。AMR 是各向异性磁阻:坡莫合金薄膜的电阻,随磁化方向和电流方向的夹角变:

关键在哪?它在饱和区工作,输出只看磁场方向(那个 θ),几乎不看强度。 只要场强过了门槛,B 的大小怎么波动它基本无感,它抓的是"磁化方向指向哪"。

所以一颗集成磁编芯片——比如 AS5047P,或者更进阶的 TMR 阵列——内部是两组正交的敏感桥,转一圈给 sinθ 和 cosθ,再靠 arctan 还原角度。它的信息是方向,不是大小。

到这儿,两个东西就是两个量纲:一个是"转了多少度",一个是"这里的场有多强"。你以为它们是同一件事的精度高低,其实是两根完全不挨着的轴。

那四条前提,一条一条从这一步长出来

现在你再看我原来那四条,就不觉得它们是在"列清单"了——它们全是"读大小"这一个选择背上的一笔债,而且一条牵着一条。

第一笔就在这儿:因为读大小,所以气隙必须先算

磁铁是产生场的,传感头是测场的。两者之间的气隙一变大,磁铁离传感头远一点,穿过去的场强就小。对一个只读大小的器件,这是硬伤——信号缩、信噪比掉。

算笔实在的。拿一根小磁铁当偶极子近似,它产生的场在气隙方向大致按 1/r31/r^3 衰减。气隙从 3mm 拉到 4mm:

B(4)B(3)≈(34)3≈0.422.\frac{B(4)}{B(3)}\approx\left(\frac34\right)^3\approx0.422.

就差 1mm,场强掉了近 58%。 你拿线性霍尔去读,输出直接缩到四成。你说气隙是"装配问题"?对读大小的器件,气隙就是这个链路的生死线,因为它直接砍掉你读的那个输入。

可这一步还没算完。气隙变了会让信号变小,小到一定程度就进不了 ADC 里能区分的档位——这时候你会去做一个看似聪明的事:把放大器增益加大。而增益一加大,你同时把霍尔自己的噪声、失调也一起放大了。所以气隙这第壹笔账,会把你一步步推到"噪声主导"的墙角。这就是为什么我说它是"生死线",不是"装配公差"。

第二笔,跟着温度来,而且藏在第一笔的坑里

气隙让你把输入变小了,那接下来的问题是:这个"变小"到多少,能把你搞崩?——温度这条就踩着这个问题进来了。

钕磁的剩磁温度系数是负的,大约。这个数看着很小,小到很多人一眼略过。可它是乘在"场强"上的,不是乘在"角度"上的。从 25°C 干到 105°C:

场强比室温掉了 8%。 对一个读大小的器件,它根本分不清"这是我这台设备在升温、场强在掉,还是磁铁真的转了一个角度"。它俩在它那里是同一个物理输入。于是温度漂移直接变成角度误差。

你问那能不能补偿?能。但补偿表这一条,是第二笔账里最狠的一层——你补偿的是"场强随温度的变化",可你补偿的那个基准,本身在被温度搬动。 更糟的是,很多应用里高温往往就是精度要求最紧的时候(电机跑热了、腔体在加热),你在最关键的时刻,恰恰给你最大的那一个 -8%。温度这一条,几乎是把霍尔在"热"这一侧的所有余地都吃干净了。

第三笔,剩磁批间差——它是让你前面所有标定"作废"的那条

前面两笔,你还能靠出厂标定、靠温补表去硬扛。可剩磁批间差这一条,是把你的标定整体架空。

同一颗料号的磁铁,批与批之间剩磁不齐。剩磁 BrB_r 跟合金成分、烧结工艺、取向度都有关系,量产里它有一个分布——工程上常见 ±3% 这个量级。你出厂时标定的"这个场强 = 这个角度",用的是这一批磁铁;下一批剩磁差 3%,你那张标定表就对不上了。

对读大小的链路,这是藏在生产里的暗雷:首件标定算得漂漂亮亮,换一批磁铁,复测就偏了。 而且它不像温度那样有规律可循(温度至少有正向关系),它是随机、离散、甚至一个批次一个样的。你没法写一条温度函数去套它,只能用"整机随磁铁一起校准"去规避。做集成磁编的,往往把磁铁关键参数一起校进去,用户拿到的是整机校准过的;而你线性霍尔 + 自家 ADC,就得自己啃这个"磁铁换了批,标定作废"的苦果。

第四笔,装配偏转——它让你连"补偿"都补不干净

到这一笔,你已经没有退路了。前面几笔还能靠校准、靠温补表去部分地救,可装配偏转这一笔,恰恰是把"还能救"这条路也给堵上。

磁铁稍微歪一点、或者轴上磁铁的轴向位置偏了,磁场分布就不均匀。本来是匀场的区域出现梯度,读大小的器件把梯度当成角度变化。更麻烦的是,磁铁往往装在转子上,跟霍尔芯片不是严格同心。装配上偏转几度,场强分布对空间角度极其敏感——偏一点,某些位置场强高、某些位置低,你读出来的那条曲线就不是干净的正弦了,后面插值就会插出鬼来。

读方向的器件也会受装配影响,但影响的是"相位对齐",是另一种能用标定补偿的东西。而读大小的器件,装配偏转直接改的是它读的那个"大小"本身——你连想校都不知道该往哪个方向补:到底是偏了角度,还是场强涨了,你分不清楚。这一笔,是靠后天的校准最无能为力的。

看到底了:那四条根本不是"条件",是"命运"

所以把四笔账串起来,你会发现它不是"四条够用条件",是一根递进下来的链条:

  • 因为霍尔读大小,所以气隙必然第一刀砍"大小";

  • 气隙把你逼到"信号变小"的墙角后,温度又把你这个变小的信号往死里压(-8%);

  • 前面两笔你还能靠标定、温补去扛,可剩磁批间差把你的标定整体架空(±3%);

  • 剩下装配偏转,连"补偿"这条路都断了。

它不是四条并列的前提,是一条决定性选择(读大小)引发的连锁反应,四笔账一笔压一笔。我当年把它拆成"分辨率/精度/转速/磁铁位置"四行,是被表象骗了——那四条里有两条(分辨率、转速)其实是另一根轴上的事,跟"读大小"这一根没多大关系,我硬把它们并进来,反而把真正的因果链盖住了。

分辨率和转速这两条,我单独说干净。

那我原来担心的"分辨率、转速"呢?

分辨率,其实最不该担心。 霍尔档位低、量化粗。SS49E 模拟输出,灵敏度约 1.4 mV/G,线性窗口在常见样品上大致 ±250 G 上下,输出接主控的 ADC 去数。给你算一笔:假设你的 ADC 是 12 位,量程前设成能覆盖 ±250 G 的气隙范围,那一个 LSB 对应多少磁场?

再看灵敏度 1.4 mV/G,这一格在输出电压上就是。对一个便宜的 12 位 ADC,这已经接近它的噪声地板了——所以决定你"能分辨到多细"的,根本不是你脑补的那种"位置分辨率",是ADC 自身的噪声位。

这就是为什么我说分辨率这条最不该担心:不是因为它好,是因为它根本不是决定"够用不够用"的那根轴。你只要知道转子停在某一档、每分钟转几圈、要不要换相,这个"档位粗"反而够了。真到要读精确角度的场合,“霍尔"这两个字我压根不会出口。

转速才是那条独立的物理通道。 开关霍尔有个物理天花板:低速它老实给你边沿,转速一上去边沿就开始跟歪。响应时间在微秒到十几微秒这个量级,配合磁极宽度和机械转速,高速下占空比和边沿抖动一点点把你的角度吃掉。

这条我也可以算:假设你要靠开关霍尔做 4 极对电机的换相定位,那一个电转角就是机械的。假设磁极宽度对应的"要读出的一格"是 15° 电角,电机在 6000 rpm,那就是每秒 100 圈,一个电转角周期是。你要在这一格 15° 内出个可靠的换相沿,你的开关霍尔加主控这一整条链,响应必须远小于
——而这个量级,12 µs 的响应没问题,可一旦你的信号链里加了滤波、加了施密特回滞、还隔了光耦,每加一级都把那个沿拖慢一点,几级下来可能就到百微秒量级了。这时候没出问题不是因为你够快,是你还没到那个转速。

这条跟"读大小"不是一个来源,它是器件的动态响应跟机电转速之间的博弈。我原来把它跟其余三条并列,是错的——它该单独放在"你转多快"这一问里。

所以"够用"的边界,一句话就能说清

把四笔账摊完,把"分辨率、转速"分别归位,那"霍尔够用"到底什么情况下成立?我现在是这么看的:

只要你这条链路要的是"那边转了多少圈、停在某一档、要不要换相”——也就是不把那个 B 的大小当精确角度来读——霍尔就够用,而且是最省钱的。 反过来,一旦你要从 B 的大小里抠出精确的"转了多少度",它就从"够用"变成"暂时还没出问题"了。

这条分界不玄,它几乎等于"读数"和"读角度"的分界,等于"大小"和"方向"的分界。你会发现,气隙、温度、剩磁、偏转这四条,全在这条分界的一侧反复撞来撞去;而分辨率、转速,是另一根轴(时间轴、位数轴)上的事,被我不小心插了进来。真正把你从"够用"推向"不够用"的,从来不是位数的多寡,也不是响应快慢——是你到底在读"大小",还是在读"方向"。

选型上也因此有了个能用的顺序:先问你是读"大小"还是读"方向";再问你要不要连续角度;最后才问位数和带宽。这三问顺序不能乱,乱了你就会拿位数和带宽去解决一个"方向"已经不对的问题——那是白花钱。

可我也没打算把它一棒子打死

写这些不是要劝你"别用霍尔"。恰恰相反,我手里有大量场合,我照样一分钟都不犹豫就选它。

比如一个电动工具的空转锁死保护:我只需要知道"堵没堵转"。堵转那一刻电流猛增、转速骤降,我要的不是角度,是一个剧烈变化的脉冲沿。这时候用一颗开关霍尔去数牙盘上的磁极,干净利落,几毛钱,抗过载,坏了也不心疼。你要是给我上一颗 14 位磁编去干这事,反而是糟蹋——它贵、它娇气、它慢,而且它给的那些"精度"在这儿一个都用不上。

再比如一个家用风扇的档位换向。我要的是"这个扇叶现在该在哪一档",不是"它精确转到几度"。霍尔加一个 ADC 扫一圈完全够,甚至只要三片开关霍尔摆到合适角度就能判别。这种场合你非要抠"误差零点几度",是拿需求去迁就器件,不是拿器件去满足需求。

还比如磁轴键盘。它要的本来就是"你是按键、你是没按键",是一种两态/大区间判断,不是一个连续角度。线性霍尔读大小刚刚好——你甚至欢迎它"档位粗",因为粗意味着抗干扰、抗抖动。这个场景里,我用 SS49E 就是我最后那句话的活例子:你要读的是"大小"的一种两态判据,不是"方向"。

这些场合的共同点,是“够用"真正站得住——因为它要的那个量,本来就不是"精确方向”,而是"一个有阈值的判据"。到这种时候,“够用"不是一句搪塞,是最优解。

尺子,我还是没造出来

写到这里,回到最开始那句"够用,够用相对谁”。我大概想通了"够用"是个带条件的判断,可"条件该掐多紧"这把尺,我始终没找着通用的。

分辨率你能拿位数说,精度你能拿温箱说,转速你能拿带宽说——唯独"用这件东西的人到底是在读大小,还是在读方向",这把你造不出来。因为这一问不回到器件本身,要回到人的需求:你要的那个"角度",是不是真的必须是一个角度?还是只要一个"够用的档位"。

也许它本来就没有标准答案。我只是把它当成一句没有条件的话,说了很多年。但至少现在,再有人问我"霍尔够不够用",我不会只说一句"够用"了。我会先问一句:你在这条链路里,是要读那个"大小",还是要读那个"方向"?

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

关注公众号「如是有为」

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