Allegro 冗余电感编码器新申请:同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈
首发于公众号「如是有为」 · 查看原文

这篇拆的是 Allegro 一件新公开的冗余电感编码器相关申请。
严格说,专利原文讲的是 redundant inductive sensor system。本文按编码器工程语境来讲,因为它最后影响的是 角度、位置反馈和冗余通道可信度。

它不是一个已经授权结论,也不是产品发布会新闻,而是一件值得工程师拿出来看的公开技术方案。
我不想一上来就讲“Allegro 厉不厉害”,也不想把它包装成什么行业趋势。
真正让我停下来的,是它抓住了一个板级传感器里很脏的问题:
两套 TX/RX 线圈放在同一块 PCB 上,你在框图上把它们画成两路冗余,磁场却根本不按你的通道边界走。
TX1 一发射,RX2 可能也听见。
TX2 一工作,RX1 也可能被带进去。
你以为自己做了双路备份,但如果其中一路该停的时候停不下来,它不是安静地坏掉,而是继续往板子上、空间里、接收链路里打信号,把另一条本来健康的通道也拖到位置反馈不可信。
Allegro 这件申请真正有意思的地方就在这里:它没有假装同板线圈串扰可以被彻底消灭,而是反过来问了一句——既然串扰消不掉,能不能把它变成判断坏通道的证据?
两路冗余画得很独立,PCB 上的磁场先不认账
单路电感编码器的逻辑并不复杂。
TX 发射线圈产生交流磁场,金属 target 改变耦合关系,RX 接收线圈拿到被位置调制后的信号,后面再经过 AFE、ADC、同步解调和角度计算,输出位置或角度。
如果是旋转位置检测,常见做法是构造类似 sin/cos 的接收信号,再通过角度算法算出目标位置。
单路系统这样做,没有太多悬念。
真正的麻烦从“冗余”开始。
功能安全要求你做两路。于是原理图上出现了两套 interface circuit、两套 TX、两套 RX。
Channel 1 算 Angle1,Channel 2 算 Angle2,外部 MCU 再比较两路输出,差值大了就报警。
框图看起来很漂亮,评审 PPT 上也很安全。
但电感编码器不是数字隔离器。它靠的就是电磁耦合。
你不能一边希望 TX 到 RX 的耦合足够强,一边又幻想旁边另一套线圈完全听不见。
尤其两路线圈都做在同一块 PCB、同一个 target 附近,铜层、介质、气隙和空间磁场全混在一起,所谓“独立”一上板就开始打折。
冗余电感编码器最现实的矛盾是:功能安全希望两路独立,板级磁场却天然交叉耦合。
最怕不是坏一路,而是坏通道还在继续发射
双路冗余最容易给人一种错觉:
我多放了一路,所以系统更安全。
但真实工程里,坏一路本身并不是最可怕的。
最可怕的是这一路坏了以后,还在继续影响另一条路。
比如 IC1 的发射链路失控,TX1 本来应该停止发射的时候没有停。
它不是静默掉线,而是继续往空间里打激励。这个时候 IC2 还在通过 RX2 接收信号、计算位置,但 RX2 前端可能已经被 TX1 的异常发射带偏。
外部 MCU 最后看到的,也许只是两个角度开始不一致,或者两路角度都变得奇怪。
问题是,到这一步再判断,已经有点晚了。
你看到的是故障结果,不一定看得清故障动作。
到底是 IC1 没发出来?
是 IC1 停不下来?
是 IC2 接收链路错了?
是 target 偏了?是气隙变了?
还是两路线圈耦合把对方带偏了?
如果冗余诊断只停留在“Angle1 和 Angle2 差多少”,系统只能在最后结果上吵架。
但 Allegro 这件申请想往前抓一层:
先不急着比较两个角度,先看每一路激励源有没有按规则工作。
它问的是更底层的问题:
谁该发射的时候没发射?谁该闭嘴的时候还在发射?
这才是它的工程入口。
别人想消掉串扰,它先给串扰排班
如果在设计评审会上有人说,两套线圈串扰太大,怎么办?
很多工程师的第一反应一定是:拉开距离。换层。改线圈。加屏蔽。把耦合做小一点。
这个反应没错,而且很多时候必须做。
但问题是,汽车执行器、电驱、机器人关节、紧凑型伺服这些场景,经常不给你这么奢侈的空间。
PCB 就那么大,target 就那么近,气隙就那么一点,成本、尺寸和结构都卡着你。
你想靠“隔远一点”解决所有问题,机械结构可能第一个不同意。
Allegro 这件申请的反常识在于,它没有把串扰只当成敌人。
它承认同板线圈会互相听见,然后给这个“互相听见”加规则。
串扰如果没有规则,就是噪声。串扰如果有时间窗口、有发射身份、有该出现和不该出现的条件,它就变成了诊断证据。
这就是标题里那句话的意思:
同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈。
轮流发射,互相监听:先判断谁在按规矩工作
这件申请里最关键的动作,不是多加一路线圈,而是让两路轮流发射。
第一路有自己的发射窗口,第二路也有自己的发射窗口。两路发射窗口不重叠。
换成人话就是:
同一时间只能有一个通道主动说话。

图 2:IC1 发射时,IC2 监听;IC2 发射时,IC1 监听。发射窗口不重叠,系统才知道“此刻理论上是谁在说话”。
IC1 轮到自己发射时,驱动 TX1,同时通过 RX1 做自己的测量。
这个时候 IC2 不发射,而是在监听窗口里听 TX1。
反过来,IC2 轮到自己发射时,IC1 闭嘴监听 TX2。
这个设计看起来朴素,但它解决了一个很关键的问题:
让系统知道此刻空间里理论上是谁在说话。
如果两路同时发射,RX 上听到的东西混成一团,你很难判断到底谁出了问题。
错峰之后,每个窗口里只有一个合法发射者。于是故障判断不再是“信号乱了”,而变成更清楚的两类判断。
第一,该听见的时候没听见。
比如 IC1 在发射窗口里应该发 TX1,IC2 在监听窗口里却没听到,那就说明 IC1 相关链路可能有问题。
可能是驱动没起来,可能是 TX1 开路,可能是供电、时钟或调度异常。
第二,该安静的时候还不安静。
比如 IC1 的发射窗口已经结束,TX1 按理应该停下,但 IC2 还能继续听到它。
这就说明 IC1 可能卡在发射状态,或者 TX1 驱动失控。
前一种像是“这一路死了”。
后一种更麻烦,像是“这一路还在害人”。
为什么它能保护健康通道?因为它先抓住谁在胡来
冗余系统真正难的地方,不是多放一路,而是坏一路以后怎么办。
如果坏通道只是安静地没输出,健康通道还有机会继续工作。
但如果坏通道还在发射、还在耦合、还在污染接收前端,健康通道就可能被一起拖下水。
到那时你再看两路角度差异,已经很难判断谁才是源头。
Allegro 这套思路的价值,是把诊断前移到了发射行为本身。
当 IC2 发现 IC1 该发没发,或者该停没停,它可以把这个状态上报给外部 ECU 或 MCU。
系统就有机会禁用 IC1,让 IC2 进入单通道模式继续工作。
反过来,IC1 也可以监督 IC2。
fail operational 的价值,不是一发现问题就全部停掉,而是在确认哪一路失控以后,把故障通道隔离掉,让剩下那一路尽可能继续提供位置反馈。

图 3:坏通道不是简单“没输出”,更危险的是继续发射并污染另一条链路。互相监听的意义,是先抓住谁在胡来,再让健康通道继续提供位置反馈。
所以它不是简单的“双路角度互相投票”。
投票只能告诉你两个结果不一样,但不一定告诉你谁在污染谁。
互相监听发射行为,才能更早判断谁没有按规则发射,谁没有按规则停止。
冗余不是把两颗芯片焊在一起。冗余是要回答:当其中一颗开始胡来时,另一颗能不能知道它在胡来,并且自己还能不能继续干活。
多路系统还要知道:我听到的到底是谁
两路系统里,靠时间窗口基本能区分身份。
轮到 IC1 发射,就应该听到 IC1。
轮到 IC2 发射,就应该听到 IC2。
但如果扩展到三路、四路,只靠时间窗口就不够稳。
系统还要知道:现在听到的这个信号到底来自哪一个 interface circuit。
所以申请里还提到,发射信号里可以带 interface circuit identifier。
这个 ID 不是简单在通信总线上报个编号,而是编码进发射信号里,让监听通道从接收信号中识别发射者身份。
这里面的思路依然很工程:
不仅要听到信号,还要知道谁发的。
该出现的 ID 没出现,是问题。
不该出现的 ID 出现了,也是问题。
这样系统才能在多通道冗余里继续定位故障,而不是只知道“好像有东西在发射”。
它不是万能诊断,但抓住了冗余电感编码器最脏的一层
这件申请不能吹成万能。
它主要抓的是发射链路和接口电路时序相关的故障,比如某一路没按时发射,某一路发射停不下来,TX 线圈开路,驱动异常,接口电路调度失控,或者多路系统里发射者身份异常。
但它不能解决所有位置误差。
如果两路线圈被同一个机械安装误差影响,target 本身加工有系统偏差,气隙变化导致两路一起漂,温度模型一起错,或者接收链路、解调链路、角度算法里出现共因问题,单靠“互相监听发射”并不能全部发现。
所以它的边界很清楚:
它不是把冗余电感编码器所有误差都诊断掉,而是抓住了一个非常具体的板级痛点。
多套 TX/RX 和 interface circuit 共存在同一块 PCB 上时,如何利用不可避免的交叉耦合,判断对方有没有按规则发射,并在一路失控时尽快隔离它,避免健康通道被拖偏。
这个边界说清楚,技术才可信。
给编码器工程师的提醒:别只盯着两路角度差多少
我觉得这件申请最值得记住的,不是“Allegro 又做了一个冗余方案”。
这个说法太泛。
真正有价值的是它的工程转身:
把原本讨厌的同板串扰,变成受控监听路径;把原本在 MCU 端才做的角度比较,前移到 interface circuit 的发射窗口和监听窗口;把原本模糊的“一路坏了”,拆成更具体的“该发没发”和“该停没停”。
这对电感编码器、磁编码器、光编码器都有启发。
下一代冗余编码器不能只问:
两路角度是否一致?
还要问:
两路通道有没有可验证的激励源?
通道之间有没有可解释的监听关系?
故障能不能定位到发射、接收、解调、计算或输出层?
一路失效后,另一路能不能不被拖死,并继续提供可用位置?
别只看两路输出差多少。
先看谁在发射,谁在监听,谁该闭嘴的时候还没闭嘴。
很多冗余系统真正的死法,就藏在这里。

关注公众号「如是有为」
微信扫一扫,新文章先在公众号发出。