Allegro 冗余电感编码器新申请:同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈

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

Allegro 冗余电感编码器新申请:同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈

这篇拆的是 Allegro 一件新公开的冗余电感编码器相关申请。

严格说,专利原文讲的是 redundant inductive sensor system。本文按编码器工程语境来讲,因为它最后影响的是 角度、位置反馈和冗余通道可信度。

Allegro 冗余电感编码器新申请:同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈

它不是一个已经授权结论,也不是产品发布会新闻,而是一件值得工程师拿出来看的公开技术方案。

我不想一上来就讲“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 这件申请的反常识在于,它没有把串扰只当成敌人。

它承认同板线圈会互相听见,然后给这个“互相听见”加规则。

串扰如果没有规则,就是噪声。串扰如果有时间窗口、有发射身份、有该出现和不该出现的条件,它就变成了诊断证据。

这就是标题里那句话的意思:

同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈。

轮流发射,互相监听:先判断谁在按规矩工作

这件申请里最关键的动作,不是多加一路线圈,而是让两路轮流发射。

第一路有自己的发射窗口,第二路也有自己的发射窗口。两路发射窗口不重叠。

换成人话就是:

同一时间只能有一个通道主动说话。

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 的价值,不是一发现问题就全部停掉,而是在确认哪一路失控以后,把故障通道隔离掉,让剩下那一路尽可能继续提供位置反馈。

Allegro 冗余电感编码器新申请:同板线圈串扰消不掉,就用它判断坏通道会不会拖偏位置反馈

图 3:坏通道不是简单“没输出”,更危险的是继续发射并污染另一条链路。互相监听的意义,是先抓住谁在胡来,再让健康通道继续提供位置反馈。

所以它不是简单的“双路角度互相投票”。

投票只能告诉你两个结果不一样,但不一定告诉你谁在污染谁。

互相监听发射行为,才能更早判断谁没有按规则发射,谁没有按规则停止。

冗余不是把两颗芯片焊在一起。冗余是要回答:当其中一颗开始胡来时,另一颗能不能知道它在胡来,并且自己还能不能继续干活。

多路系统还要知道:我听到的到底是谁

两路系统里,靠时间窗口基本能区分身份。

轮到 IC1 发射,就应该听到 IC1。

轮到 IC2 发射,就应该听到 IC2。

但如果扩展到三路、四路,只靠时间窗口就不够稳。

系统还要知道:现在听到的这个信号到底来自哪一个 interface circuit。

所以申请里还提到,发射信号里可以带 interface circuit identifier。

这个 ID 不是简单在通信总线上报个编号,而是编码进发射信号里,让监听通道从接收信号中识别发射者身份。

这里面的思路依然很工程:

不仅要听到信号,还要知道谁发的。

该出现的 ID 没出现,是问题。

不该出现的 ID 出现了,也是问题。

这样系统才能在多通道冗余里继续定位故障,而不是只知道“好像有东西在发射”。

它不是万能诊断,但抓住了冗余电感编码器最脏的一层

这件申请不能吹成万能。

它主要抓的是发射链路和接口电路时序相关的故障,比如某一路没按时发射,某一路发射停不下来,TX 线圈开路,驱动异常,接口电路调度失控,或者多路系统里发射者身份异常。

但它不能解决所有位置误差。

如果两路线圈被同一个机械安装误差影响,target 本身加工有系统偏差,气隙变化导致两路一起漂,温度模型一起错,或者接收链路、解调链路、角度算法里出现共因问题,单靠“互相监听发射”并不能全部发现。

所以它的边界很清楚:

它不是把冗余电感编码器所有误差都诊断掉,而是抓住了一个非常具体的板级痛点。

多套 TX/RX 和 interface circuit 共存在同一块 PCB 上时,如何利用不可避免的交叉耦合,判断对方有没有按规则发射,并在一路失控时尽快隔离它,避免健康通道被拖偏。

这个边界说清楚,技术才可信。

给编码器工程师的提醒:别只盯着两路角度差多少

我觉得这件申请最值得记住的,不是“Allegro 又做了一个冗余方案”。

这个说法太泛。

真正有价值的是它的工程转身:

把原本讨厌的同板串扰,变成受控监听路径;把原本在 MCU 端才做的角度比较,前移到 interface circuit 的发射窗口和监听窗口;把原本模糊的“一路坏了”,拆成更具体的“该发没发”和“该停没停”。

这对电感编码器、磁编码器、光编码器都有启发。

下一代冗余编码器不能只问:

两路角度是否一致?

还要问:

两路通道有没有可验证的激励源?
通道之间有没有可解释的监听关系?
故障能不能定位到发射、接收、解调、计算或输出层?
一路失效后,另一路能不能不被拖死,并继续提供可用位置?

别只看两路输出差多少。

先看谁在发射,谁在监听,谁该闭嘴的时候还没闭嘴。

很多冗余系统真正的死法,就藏在这里。

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

关注公众号「如是有为」

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