4、电压采样异常(三):通道间串扰——排查PCB Layout走线、多路复用器切换顺序、ADC建立时间

好,咱们接着聊电压采样异常。前两章讲了共模干扰和基准源的问题,这一章要聊的,是那种最让人头疼的——明明单通道测着没问题,一上多通道采集,数据就开始“串门”。

说白了,就是通道间串扰。我在项目里遇到过好几次,最夸张的一次,BMS上报的电压数据里,第3节电芯的电压居然跟着第5节电芯的电流波动走。你说离谱不离谱?

这种问题,根源往往不在芯片本身,而在三个地方:PCB Layout走线、多路复用器切换顺序、ADC建立时间。咱们一个一个拆开看。

4.1 根源一:PCB Layout走线——串扰的物理基础

你想想看,采样线在PCB上走,本质上就是一根根天线。两根线靠得太近,信号就会互相感应。尤其是BMS这种高压大电流环境,采样线旁边要是走了功率线,那干扰简直不要太明显。

我个人习惯,采样线一定要遵守“三不原则”:

  • 不平行:采样线之间不要长距离平行走线,尤其是差分对之间。实在避不开,中间加地线隔离。
  • 不靠近:采样线远离功率走线(充放电回路、MOS驱动线),至少保持3倍线宽距离。
  • 不共用:采样线的参考地要单独拉回芯片GND引脚,不要跟功率地混在一起。

重要经验: 我见过一个案例,采样线在PCB上走了10cm,旁边就是电池总正总负的功率线。结果采样值波动超过20mV。后来把采样线改到内层,上下两层都是地平面,问题直接消失。

另外,走线阻抗匹配也很关键。采样线如果太长,分布电容会跟ADC输入阻抗形成RC低通滤波,导致采样值建立变慢。嗯,这里要注意,ADC输入端的RC滤波电路,R值不要选太大,否则建立时间会成倍增加。

4.2 根源二:多路复用器切换顺序——时序的陷阱

多路复用器(MUX)是BMS采样芯片内部的核心部件。它负责把不同通道的电压信号,依次切换到ADC输入端。但问题来了——切换不是瞬间完成的。

我刚开始做BMS时,总觉得MUX切换就是“啪”一下的事。直到有一次,我发现第1通道切到第2通道时,第2通道的采样值里总带着第1通道的“残影”。

为什么会这样?因为MUX内部有寄生电容。切换瞬间,前一个通道的电荷会残留在寄生电容上,然后“污染”下一个通道的采样值。这就是典型的电荷注入效应

解决思路有两个:

  1. 增加切换间隔:MUX切换后,不要立刻启动ADC采样。等一段时间,让残留电荷泄放掉。这个时间通常需要几个微秒到几十微秒,具体看芯片手册。
  2. 改变切换顺序:如果相邻通道电压差很大(比如第1节3.0V,第2节4.2V),串扰会更严重。我建议先采样电压相近的通道,或者中间插入一个“空闲通道”来泄放电荷。

小技巧: 有些芯片支持“伪差分”模式,采样时把负输入端也切换。这种模式下,共模干扰会被抑制,串扰也会小很多。如果你的芯片支持,优先用这个模式。

4.3 根源三:ADC建立时间——采样精度的最后一道关

ADC建立时间,说白了就是ADC内部采样电容充满电需要的时间。如果建立时间不够,采样值就会偏小,而且不同通道之间会互相影响。

我记得有一次,客户反馈说BMS在低温下电压采样偏差很大。我排查了半天,最后发现是ADC建立时间设置得太短。低温下采样电容的充电速度变慢,建立时间不够,导致采样值不准。

ADC建立时间的计算公式很简单:

t_settle = (R_source + R_switch) × C_sample × ln(2^N / 误差)

其中:

  • R_source:外部信号源阻抗(包括采样电阻、RC滤波电阻)
  • R_switch:MUX内部开关导通电阻
  • C_sample:ADC内部采样电容
  • N:ADC分辨率(比如12位、14位)
  • 误差:允许的建立误差(通常取0.5 LSB)

举个例子,假设R_source=10kΩ,R_switch=5kΩ,C_sample=20pF,12位ADC,允许0.5LSB误差:

t_settle = (10k + 5k) × 20pF × ln(2^12 / 0.5)
         = 15k × 20pF × ln(8192)
         = 300ns × 9.01
         ≈ 2.7μs

也就是说,MUX切换后,至少要等2.7μs才能启动ADC采样。如果芯片手册里给的建立时间比这个短,那就得小心了。

警告: 很多BMS芯片的ADC建立时间寄存器,默认值是按理想情况设置的。实际项目中,一定要根据你的外部电路参数重新计算。尤其是RC滤波电容选得比较大时,建立时间会显著增加。

4.4 综合排查流程

遇到通道间串扰问题,我一般按这个顺序排查:

  1. 先看PCB Layout:采样线有没有跟功率线平行?有没有长距离并行走线?地线是否独立?
  2. 再看MUX切换时序:切换间隔够不够?有没有在切换后立即启动ADC?
  3. 最后算ADC建立时间:外部RC参数是否合理?建立时间寄存器配置是否正确?

下面这张图,是我总结的排查逻辑,你可以参考一下:

通道间串扰排查流程图 发现通道间串扰 第一步:检查PCB Layout走线 采样线是否平行?是否靠近功率线?地线是否独立? Layout有问题? 优化走线布局 第二步:检查MUX切换顺序 切换间隔是否足够?切换后是否立即采样? 时序有问题? 调整切换间隔/顺序 第三步:检查ADC建立时间 外部RC参数是否合理?建立时间寄存器配置是否正确?

4.5 避坑指南

最后,分享几个我踩过的坑:

  • 我曾经遇到过一个问题:采样值在常温下完全正常,一到高温就出现串扰。后来发现是MUX内部开关的导通电阻随温度升高而增大,导致RC常数变大,建立时间不够。解决办法是适当增加切换间隔。
  • 还有一次,客户反馈说第1节和第2节电芯的电压总是“此消彼长”。我查了半天,发现是PCB上这两根采样线走了同一个过孔区域,寄生电容耦合导致的。把走线分开后问题解决。
  • 另外,有些芯片的ADC建立时间寄存器是“自动模式”,芯片会根据外部RC自动计算。但自动模式往往偏保守,有时候反而会引入额外延迟。我建议在关键项目中用手动模式,自己算好时间写进去。

一句话总结: 通道间串扰,90%是Layout问题,9%是时序问题,1%是芯片问题。先查硬件,再调软件,别一上来就怀疑芯片坏了。


公众号:蓝海资料掘金营,微信deep3321