高边电流采样全解析:原理、选型、PCB布局与工程实践
2026/9/18 18:20:19 网站建设 项目流程

做嵌入式硬件这几年,我踩得比较深的一个坑,就是电流采样。之前做一款12V工业控制板,想实时统计整机功耗,图省事把采样电阻放在GND回路里,结果板子一跑起来,串口、CAN和模拟量采集全被干扰得不成样。后来把方案改成高边电流/功率传感器(High-Side Current/Power Sensor),用专用的高边电流检测放大器重新做了一版,问题才彻底解决。这篇文章就围绕这个方案,聊聊高边检测的原理、芯片选型、参数计算和PCB布局,给做电源管理、电池BMS、电机驱动、板卡功耗监测的朋友做个参考。

我尽量把话说明白,适合刚入门不久、还在用低边采样将就的工程师,也给有经验的人一些可以直接抄的细节。高边检测这东西,表面看只是把采样电阻换了个位置,实际上牵扯到共模、CMRR、Kelvin走线、功率和噪声的取舍,每一环都有坑。

1. 高边检测到底解决什么问题

1.1 低边采样为什么容易翻车

低边电流采样是很多人的第一反应:把采样电阻串在负载和GND之间,然后在采样电阻两端接运放。因为电阻两端都是低电位,放大电路的设计非常方便,普通运放就能搞定。网上很多入门教程也是这么教的,但放到真实系统里就会出事。

我用低边方案踩的坑比较典型。12V系统,负载是一块带模拟采集的控制板,我在它的电源负极回路里串了1mΩ电阻,做了个放大电路。板子单独供电调试的时候一切正常,一旦把外部传感器、串口调试器一起接上,采样值就开始乱跳,整块板的GND电位也被抬高了接近几十毫伏,模拟采集精度直接崩掉。

问题根源在于低边采样把本应干净的参考地切断了。采样电阻上的压降,会让负载的GND和电源的GND不再等电位,所有以GND为参考的信号都会受到干扰。如果负载本身还有接地点,还会形成地环路,轻则信号噪声,重则直接不能工作。负载端的通信接口,比如CAN、RS485,也容易因为共模偏移出现误码。

1.2 高边检测的原理与差异化价值

高边检测的做法是把采样电阻放到电源正极和负载之间。采样电阻上的压差依然和电流成正比,但因为电阻两端对地的电压都很高,不再是0V附近,所以不能用普通运放简单放大,需要专门处理共模电压。

这个位置带来的好处是实实在在的。负载可以真正接到GND,不会抬高参考地,系统所有模块的地电位保持一致,这是通信和模拟电路能稳定工作的前提。另外高边采样天然适合过流保护,因为只要检测到采样电阻压降超过阈值,就能判断负载侧异常,可以直接触发MOS管断开电源,低边方案做这类保护会很别扭。

缺点是检测电路要直接面对电源电压动态变化。比如12V系统里,采样电阻两端的共模电压就是12V附近,如果负载是电机,电流突变时母线电压还会波动,运放必须承受很高的共模输入电压,并且在高共模下还能准确放大极小的差分信号,这对器件选型提出了要求。

1.3 高边和低边选型对比

我把两种方案整理成一个表,方便做方案评审时直接参考。

对比项低边检测高边检测
采样电阻位置负载和GND之间电源和负载之间
运放共模电压接近0V接近电源电压,会随负载波动
对系统GND影响抬高参考地,干扰敏感电路无影响,负载直接接GND
短路保护不适合检测负载上方短路适合,可直接联动保护
放大电路难度低,普通运放可做高,需要高CMRR器件
成本较低稍高,但可靠性提升明显

做产品的时候,成本永远要考虑,但我会谨慎对待"低边省一个专用芯片钱"这种想法。因为低边采样带来的地电位扰动,往往要花更多时间在信号完整性和软件滤波上,最后算下来并不划算。除非是极简单的、负载与系统完全隔离的场合,否则我基本会选高边。

2. 核心方案选型:从分立运放到专用传感器

2.1 分立运放方案能做,但代价不低

高边采样如果非要用分立运放做,通常考虑差分放大电路:用两个输入电阻和反馈电阻把采样电阻两端的差分信号搬到一个参考地。听上去不难,但工程里很容易变成"看着原理图正常,实际精度很差"。

差分放大器对四个电阻的匹配度极其敏感。假设运放本身的CMRR有100dB,但外部电阻比例只要差0.1%,电路的总CMRR就可能掉到60dB以下。用我前面讲过的计算,在12V共模电压下,60dB对应的误差是12mV,而2mΩ采样电阻上10A电流也只有20mV信号,这个误差等于直接把你辛辛苦苦放大出来的信号吃掉了。

我并不是说分立方案绝对不能用。如果系统对精度要求不高,只是做一个粗略的过流判断,用高精度匹配电阻加上普通运放也够。但如果要拿这个信号去做功耗统计、做闭环控制,我建议直接用专用电流检测放大器,省下的调试时间远比芯片差价贵。

2.2 专用高边电流检测放大器是主流

市场上有大量专为高边电流检测设计的放大器,比如TI的INA180、INA240、INA281,ADI的AD8210、AD8418,还有MAX4080等。这类芯片的内部电阻都做了激光校准,增益精度高,共模抑制比通常在100dB以上,有些型号允许共模电压到80V甚至更高,非常适合工业和车载环境。

我实际用得最多的是INA240。它和普通电流检测放大器最大的区别是内置了PWM抑制功能,对电机驱动、DC-DC这类开关噪声很强的应用特别友好。之前在一个H桥电机驱动板上做过对比,同样条件下,普通放大器在PWM边沿会输出明显的尖峰毛刺,而INA240的输出相对干净,软件上少做很多滤波处理。

使用非常简单:采样电阻两端接芯片的IN+和IN-,输出端给MCU的ADC,增益通过型号后缀选好就行,比如INA240A1是20倍,A2是50倍,A3是100倍,A4是200倍,另外还有双向检测版本,可以根据应用选。虽然都是运算放大器,但用起来真的跟普通运放不一样,不用考虑外部电阻匹配。

2.3 数字功率监测芯片怎么选

如果需求不只是测电流,还要在系统里实时看电压和功率,直接用数字输出的功率监测芯片更省事。行业里最常用的就是INA219和INA226,这俩都是I2C接口,芯片内部集成了高边分流放大器和ADC,还能把总线电压和电流乘起来得到功率,读寄存器就行。

INA219量程低、价格低,适合笔记本、手机这类轻负载;INA226支持更高的VBUS,能达到36V,分流电压范围做到正负81.92mV,用16位ADC,精度高很多,适合12V和24V工业设备。我做过一个整机功耗统计模块,就是用一个2mΩ采样电阻加INA226挂在12V电源轨入口,I2C接出来,上位机直接读电流和功率,稳定性和精度都够用。

读INA226的功率数据时要注意寄存器里的Current_LSB不是随便定的,它决定电流和功率的分辨率。后面参数设计章节我会结合实际算一次,新手容易在这里栽跟头。

2.4 霍尔与隔离式方案的取舍

高边采样还有一种常见的实现是霍尔电流传感器,比如ACS712、ACS724,以及一些闭环霍尔模块。它们不用串采样电阻,输入输出隔离,很适合大电流或者要求电气隔离的场合。

但霍尔传感器的劣势也很明显:精度通常不如电阻采样,存在零电流偏置和温漂;带宽和相位延迟也是个问题,做高速电流环会吃力。ACS712在小电流下还要注意输出噪声比较大。所以能用电阻采样的场景我不会轻易换霍尔。只有在电流非常大、功率损耗不允许串联电阻,或者系统必须隔离时,我才优先考虑霍尔。

3. 参数设计与电路实现(12V/10A案例)

这一节我用一个实际案例把参数从头算一遍:系统电源12V,额定电流10A,峰值电流12A,需要监测负载电流、电压和功率。

3.1 采样电阻计算:阻值、功率、温漂

第一步定采样电阻阻值。阻值越大,同样电流下压降越大,信噪比越好,但损耗越大。我会让满量程压降控制在20mV到100mV之间。这里取2mΩ,10A时压降是20mV,功耗是I平方R等于0.2W,选额定功率0.5W或1W的电阻,留够散热余量。

如果取5mΩ,10A压降50mV,信噪比更高,但功耗会到0.5W,在紧凑板卡上发热明显,且温漂会抬升零点。我的习惯是12V/10A级别优先用2mΩ到3mΩ,再通过放大器增益把信号抬到ADC量程内,而不是单靠加大采样电阻来取得信号。

还要看温漂系数。采样电阻最好是合金电阻或金属箔电阻,温漂控制在50ppm/℃以内。普通厚膜电阻温漂可能到几百ppm,电流一大温度一上来,满量程可能偏好几个百分点,后面再去校准会很痛苦。采购时一定要确认封装功率和温漂参数,不能只看阻值。

3.2 增益和ADC分辨率怎么匹配

采样电阻定了,下一步把电流信号放大到ADC量程附近。以INA240为例,选50倍增益的A2型号:Vout等于I乘以2mΩ再乘50,化简就是I乘0.1V/A,10A时输出1V,12A时输出1.2V。如果MCU的ADC参考是3.3V,只用了不到40%量程,分辨率浪费不少。

所以我会改用100倍增益的A3型号:Vout等于I乘0.2V/A,10A时输出2V,12A时2.4V,还留了安全余量。用12位ADC来计算,满量程3.3V对应4096个LSB,每个LSB约为0.806mV,对应电流分辨率是0.806mV除以0.2V/A,大约4mA。这个精度对绝大多数功耗监测都够了。

如果测的是双向电流,比如电机刹车时电流反向,就不能简单选100倍。双向检测要先把零点抬到VS的一半,再看正负方向的范围,这个我在3.3节说。

3.3 功率测量与双向电流检测

用INA226这类数字芯片做功率测量时,需要正确设置校准寄存器。一个典型流程是:先确定期望最大电流,比如12A,把Current_LSB设为12除以32768,取整到0.5mA/LSB,然后用公式Calibration等于0.00512除以Current_LSB和Rshunt的乘积,算出校准值。采样电阻0.002Ω,Current_LSB取0.0005A,Calibration就等于0.00512除以0.000001,得到5120,把5120写入校准寄存器。

读回的数据要按寄存器定义换算:ShuntVoltage寄存器每个LSB是2.5µV,BusVoltage寄存器每个LSB是1.25mV,电流寄存器的值等于Current_LSB乘以寄存器读数,功率寄存器的Power_LSB是25倍的Current_LSB。只要这些比例对了,算出来的功率才准。

双向电流的场景我单独提醒一句。如果只是单向电源轨监测,用单向配置就行。但电机驱动、电池充放电这些应用里,电流方向会变,采样电阻两端压差会正负切换。这时候要么选INA240的双向版本,设置基准电压偏置,要么在INA226配置里允许双向测量,并确保读回的符号位被正确解析。我在一个电池充放电项目里忘记处理符号位,结果把放电电流算成了充电功率,排查了很久。

3.4 滤波电路加在哪,别加错

高边采样最常见的滤波误区是把RC低通放在放大器输出端,或者在ADC输入前堆电容。其实多数电流检测放大器,尤其是INA240这类,官方推荐在输入端加差模RC滤波,而不是在输出端,因为输出端加电容可能影响放大器稳定性。输入端的RC可以抑制来自采样电阻本身拾取的高频干扰,同时对PWM边沿的电荷注入也有衰减。

我常用的做法是:采样电阻两端各串一个10Ω到100Ω的电阻,然后在对地并一个1nF到10nF的电容,形成差模滤波。选值时要注意不要太大,否则会拖慢阶跃响应。比如前面用10Ω电阻加1nF电容,时间常数约10ns,对音频以上噪声都有衰减,但对电流变化几乎没有延迟,适合大多数场景。

如果系统里PWM开关频率高、噪声特别凶,我还会在软件里再做一个滑动平均滤波。不要指望一段RC能搞定所有问题,硬件滤波和软件滤波搭配使用,才是在真实项目里最稳妥的做法。

4. PCB布局与抗干扰

电路原理正确只是第一步,高边电流检测的成败,很大程度看PCB布局。

4.1 Kelvin采样走线是命根子

采样电阻上的有效信号通常只有几十毫伏,大电流路径上任何铜箔压降都会污染测量结果。1oz铜箔,1mm宽,走1cm,直流电阻就有差不多5mΩ,这个量级和我的采样电阻一样。如果放大器引线直接从大电流铜箔上接,测到的就不仅是采样电阻压降了。

正确的做法是开尔文连接:从采样电阻两端的焊盘或电阻本体上,单独引出两根细的检测走线到放大器输入端,检测线不要经过大电流路径,也不要承载电流。两条检测线尽量等长、靠近走,形成差分对,这样外界的共模干扰能在放大器处抵消。这话我说过很多次,但每次评审还是能看到有人把检测线从大电流铜箔中间引出来,然后电流一大读数就偏。

4.2 大电流路径与小信号路径隔离

高边采样放大器本身是模拟小信号器件,放在功率开关器件旁边会很容易吸收开关噪声。布局时,采样电阻和放大器尽量靠近检测点,但放大器输出和输入走线要避开大电流环路,尤其是MOS管栅极驱动、电感、PWM走线这些强干扰源。

功率地和信号地要分开走,在源头单点汇合。如果系统里既有高边采样,又有MCU、通信接口,采样放大器的GND引脚不能直接铺到功率大地里,最好单独引线到模拟GND区域,再单点连接。实测中很多"读数乱跳"的问题,最后查来查去都是地平面被功率电流干扰了。

4.3 我踩过的布局坑

说一个我印象很深的案例。有块电机驱动板,高边采样放大器一开始放在功率MOS管和电感之间的空隙里,因为那里布线最短。结果一跑电机,采样输出在开关边沿出现一大串振铃,靠RC滤波压不下去。后来我把放大器挪到板边,输入走线改成Kelvin差分,把功率环路重新圈小,干扰立刻下降了不止一个数量级。从那以后我评审PCB,第一件事就是看采样电阻和放大器的位置。

另一个坑是采样电阻的封装。选大电流采样电阻时,不要只看阻值和功率,还要看寄生电感。有些功率电阻自带螺丝固定或四端开尔文结构,价格贵一点,但对精度和重复性帮助很大。对要求高的产品,我宁愿用带Kelvin引脚的专用采样电阻,也不在普通贴片电阻上反复折腾。

5. 实测校准与常见问题排查

5.1 软件校准:零点与增益两步走

任何模拟链路都有零点偏置,高边采样也不例外。上电后先让负载断开,采一次ADC读数,作为零点偏置存起来,后续所有测量都先减掉这个偏置。这一步能消除放大器残余失调和ADC自身偏置,效果很明显。

第二步是增益校准。用一个已知精度的电子负载或标准电流源,加一个稳定的10A电流,读取ADC值,计算出实际增益系数,和理论增益对比得到修正系数。采样电阻的温漂、放大器增益误差、ADC参考电压偏差都可以被这一步整体修正。校准完之后,把补偿系数存进Flash或EEPROM,每次上电加载,系统性能就稳定了。

5.2 常见故障现象速查表

现象可能原因处理办法
零负载时输出不为0放大器失调、PCB感应软件减零点,检查检测走线
小电流读数偏大检测线引入了大电流铜箔压降改Kelvin连接
大电流读数偏低采样电阻温漂、增益不足换低温漂电阻,复核增益
输出在PWM边沿跳变开关噪声耦合加输入RC,优化布局
读数饱和到满量程增益或采样电阻过大降低增益或Rshunt
数字芯片读数为负方向位判断错误检查双向配置和寄存器符号位

这张表算是我这几年调试电流检测的浓缩经验,遇到问题先按表排查,能省不少事。

5.3 系统级功耗监测的落地经验

如果把高边电流/功率传感器接入系统,有几点落地经验可以分享。第一,数字方案优先考虑I2C地址冲突,INA226这类芯片A0/A1引脚能配置多个地址,在单总线上设计好跳线,别等板子做好了才发现地址冲突。第二,采样率不用盲目拉满,功耗监测往往10Hz到100Hz就够,把总线让给更关键的管理事务。第三,在软件层面把电流和电压读取做成同一时刻采样,否则在负载快速变化时,用不同时刻的电流电压相乘算出的功率误差会很大。INA226内部有同步机制,用模拟方案时就需要软件配合。

我手上这个12V/10A模块,最终用的方案是INA240A3加STM32的ADC,同时保留了一路INA226做数字冗余。简单工况下用模拟通道实时控制,统计时读INA226,两边数据交叉验证之后,整机功耗曲线非常干净。项目交付后,这套电路的精度和抗干扰表现一直比较稳定,几乎没再出现之前低边方案那种"全线崩溃"的状况。

最后说点个人体会。高边电流/功率传感器本身的电路并不复杂,核心原理就是欧姆定律加上一个把差分小信号从高共模环境里拎出来的放大器。真正决定项目成败的,往往是对地电位、共模噪声、PCB布局这些细节的处理。我见过不少方案,芯片选型和理论计算都挑不出毛病,最后死在采样电阻的检测线引错位置,或者GND处理不当上。

所以我的建议是,画原理图之前先把系统里的地关系想清楚,尤其是电流传感器的地、MCU的地、功率地怎么汇合。多花半小时做Kelvin走线和布局规划,比事后改三版板子都管用。项目做多了就会明白,测量电路的精髓不是把器件堆多好,而是把干扰路径一条一条断干净。这套方法不光能用在高边电流/功率传感器上,凡是要测微弱信号的电路,都适用。希望这篇能帮你少走点弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询