1. 为什么便携储能设备离不开一颗靠谱的电流检测芯片
做便携式储能这行的人都有一个共识:电池管理系统(BMS)做得好不好,直接决定了产品能不能在市场上活下来。而BMS里面最基础、也最容易被忽视的一环,就是电流检测。你可能会说,电流检测有什么难的,串个采样电阻,拿ADC读一下不就完了?但真正做过产品的人知道,事情远没有这么简单。
我接触便携式储能设备大概有几年时间了,从最早的铅酸改锂电,到后来做户外电源、应急备电、太阳能储能一体机,几乎每一个项目都绕不开电流检测这个环节。早期我用过很多方案,比如霍尔传感器、电流互感器、专用电量计芯片,甚至自己搭运放做差分放大。这些方案各有各的问题:霍尔传感器精度受温度影响大、成本高;电流互感器只能测交流;电量计芯片虽然集成度高,但采样速率和灵活性受限;自己搭运放则面临温漂、共模抑制比、电阻匹配等一系列让人头疼的问题。
后来在一个户外储能电源项目里,我开始认真评估INA199这颗芯片。INA199是德州仪器(TI)推出的一款电压输出型电流分流监测器,属于零漂移架构,共有A1到A4四个增益版本(增益分别为50、100、200、500)。它的核心功能很简单:测量分流电阻上的微小压差,然后放大输出一个与电流成正比的电压信号,送给MCU的ADC去采集。但就是这么一个看起来简单的器件,在实际应用中涉及的细节非常多——分流电阻怎么选、增益怎么定、布局怎么走、滤波怎么做、校准怎么搞,每一步都有讲究。
这篇文章我想把我在便携式储能设备中使用INA199的完整经验梳理出来,包括电路设计思路、参数计算过程、PCB布局要点、实测数据以及踩过的坑。适合正在做BMS电流检测的硬件工程师、嵌入式工程师,以及想了解便携储能电源设计细节的爱好者阅读。不管你是刚入行的新手,还是做过几个项目的老手,相信都能从中找到一些有用的东西。
2. INA199的核心特性与选型逻辑拆解
2.1 INA199到底是一颗什么样的芯片
先把这颗芯片的基本情况说清楚。INA199属于电流分流监测器(Current Shunt Monitor),有时也叫电流检测放大器。它的工作原理不复杂:在电流回路上串联一个阻值很小的分流电阻(Shunt Resistor),电流流过时会在电阻两端产生一个很小的压差,INA199把这个压差放大后输出。MCU通过ADC读取这个输出电压,就能反推出电流大小。
INA199的几个关键特性值得注意:
- 零漂移架构:内部采用斩波稳定技术,失调电压典型值只有±5μV,最大±150μV(全温度范围)。这个指标非常关键,因为分流电阻上的压差本身就只有几十毫伏甚至几毫伏,如果放大器本身的失调电压太大,测量精度根本没法保证。
- 四个增益版本:A1增益50V/V,A2增益100V/V,A3增益200V/V,A4增益500V/V。增益的选择直接决定了你能测量的电流范围和分辨率。
- 宽共模电压范围:-0.3V到26V,独立于供电电压。这意味着它可以放在电池组的高端(正极侧)或低端(负极侧)进行检测,灵活性很高。
- 供电范围:2.7V到26V,单电源供电,非常适合便携设备的低压系统。
- 静态电流:最大100μA,对电池供电的便携设备来说,这个功耗完全可以接受。
- 封装:SC70-6和SOT23-6两种小型封装,占板面积小。
我选INA199最核心的原因就是零漂移+小封装+低功耗这三个特性的组合。在便携储能设备里,PCB空间紧张,功耗要求苛刻,同时测量精度又不能妥协,INA199在这个价位段里几乎是唯一的选择。
2.2 为什么不用霍尔传感器或电量计芯片
这里展开说一下选型逻辑,因为很多新手会问这个问题。
霍尔传感器的优点是非接触式测量,没有插入损耗,隔离性好。但缺点也很明显:精度通常在1%到3%之间,温漂大,响应带宽有限,而且成本比INA199方案高出不少。对于便携储能设备来说,电流检测的精度直接影响到电量估算和过流保护的可靠性,1%的精度在几百瓦的负载下可能就意味着几安培的误差,这是不能接受的。
电量计芯片(比如TI的BQ系列)集成度高,能直接输出SOC(荷电状态),看起来很方便。但问题是它的电流检测通道通常采样率较低,而且算法封闭,你很难针对自己的电池特性做精细调校。另外,电量计芯片的价格往往比INA199贵好几倍,对于成本敏感的便携储能产品来说,不太划算。
自己搭运放差分放大电路是最便宜的方案,但也是最容易翻车的。分立运放的失调电压通常在几百微伏到几毫伏级别,比分流电阻上的压差还大,根本没法用。而且电阻匹配精度、温漂一致性都是问题。我早期就吃过这个亏,用普通运放搭的电路,常温下校准好了,一到低温环境误差就飘到10%以上。
所以综合来看,INA199在精度、成本、功耗、体积这几个维度上取得了很好的平衡。它不是最便宜的,也不是精度最高的,但在便携储能这个应用场景下,它是最合适的。
2.3 增益版本的选择依据
INA199有四个增益版本,选哪个取决于你的最大测量电流和ADC参考电压。
假设你的便携储能设备最大放电电流是10A,分流电阻选1mΩ,那么满量程压差是10mV。如果MCU的ADC参考电压是3.3V,你希望满量程时输出电压接近3.3V,那么需要的增益就是3.3V / 10mV = 330。这时候A3(增益200)或A4(增益500)都可以考虑,但A3输出2V,A4输出5V(超过3.3V会饱和),所以A3更合适。
但如果你的最大电流只有5A,分流电阻还是1mΩ,满量程压差5mV,那A4的500倍增益输出2.5V,正好合适。
这里有一个关键原则:输出电压在满量程时应尽量接近但不超过ADC参考电压。太低了浪费ADC动态范围,太高了会饱和削顶。具体计算后面会详细展开。
3. 电路设计图与关键参数计算
3.1 完整电路原理图说明
先给出我在实际项目中使用的INA199电流检测电路。这个电路用在了一款12V/20Ah的便携储能电源上,最大持续放电电流20A,最大充电电流10A。
VBUS (电池正极) | | [R_shunt] (2mΩ, 2512封装, 合金电阻) | +--------+--------+ | | | IN+ IN- | | | | +----+--------+----+ | | INA199A2 | | | | | | V+ OUT +---+-----> MCU_ADC | GND | +----+-------------+ | | GND实际电路中还需要几个外围元件:
- 旁路电容:V+引脚到GND之间接一个0.1μF的陶瓷电容,尽量靠近芯片引脚。这个电容的作用是滤除电源噪声,INA199虽然PSRR不错,但在开关电源供电的系统中,电源纹波还是会通过供电引脚耦合到输出。
- 输出滤波:OUT引脚到ADC之间可以加一个RC低通滤波,比如1kΩ电阻加0.1μF电容,截止频率约1.6kHz。这个滤波器的目的是抑制高频噪声,但要注意电阻不能太大,否则会影响ADC采样建立时间。
- 输入滤波:在IN+和IN-之间可以加一个差分电容(比如100pF),以及在每个输入端到GND加共模电容。但要注意,输入滤波电容和分流电阻会形成RC网络,可能影响带宽和稳定性。
3.2 分流电阻的选型与计算
分流电阻的选择是整个设计中最关键的环节之一。选大了,功耗大、压降大;选小了,信号弱、信噪比差。
功耗计算:假设最大电流20A,分流电阻2mΩ,那么满量程功耗是 I²R = 20² × 0.002 = 0.8W。这个功耗不小,所以必须选功率裕量足够的电阻。我通常会让电阻的实际功耗不超过额定功率的50%,所以这里需要选至少2W的电阻。2512封装的合金电阻通常有1W到3W的额定功率,2W的型号可以满足要求。
压降计算:20A × 2mΩ = 40mV。这个压降在12V系统里只占0.33%,对负载的影响可以忽略。
信号幅度:40mV的满量程压差,如果选A2版本(增益100),输出电压是4V,超过了3.3V的ADC参考电压。所以A2不合适。选A1(增益50),输出2V,在3.3V范围内,但只用了60%的动态范围。如果选A3(增益200),输出8V,严重饱和。
等等,这里我算错了。让我重新算:40mV × 50 = 2V,40mV × 100 = 4V。所以A1输出2V,A2输出4V(饱和)。那A1是合适的,但动态范围利用率只有2/3.3 = 60%。
如果我把分流电阻改成1mΩ呢?满量程压差20mV,功耗20² × 0.001 = 0.4W,压降20mV。A2增益100,输出2V,动态范围利用率还是60%。A3增益200,输出4V,饱和。
如果分流电阻改成1.5mΩ?满量程压差30mV,功耗0.6W。A2增益100,输出3V,动态范围利用率3/3.3 = 91%,非常理想。
所以最终我选了1.5mΩ的分流电阻配INA199A2。这个组合的满量程输出3V,留了0.3V的裕量给过流情况,同时动态范围利用率很高。
注意:分流电阻的精度直接影响测量精度。我推荐使用0.5%或更高精度的合金电阻,温漂系数最好在50ppm/°C以下。普通厚膜电阻的温漂可能达到200ppm/°C以上,在温度变化大的户外环境中会导致明显的测量误差。
3.3 增益与ADC参考电压的匹配计算
这里把计算公式整理一下,方便你直接套用。
已知条件:
- 最大测量电流 I_max(单位:A)
- 分流电阻 R_shunt(单位:Ω)
- ADC参考电压 V_ref(单位:V)
计算步骤:
- 满量程压差:V_shunt_max = I_max × R_shunt
- 所需增益:Gain = V_ref × 0.9 / V_shunt_max(留10%裕量)
- 选择最接近且不超过计算值的INA199增益版本
以我的项目为例:
- I_max = 20A
- R_shunt = 1.5mΩ = 0.0015Ω
- V_ref = 3.3V
V_shunt_max = 20 × 0.0015 = 0.03V = 30mV Gain = 3.3 × 0.9 / 0.03 = 99
最接近的是A2版本(增益100),满量程输出30mV × 100 = 3V,小于3.3V,合适。
反过来,如果你已经确定了INA199的增益版本,想反推最大可测电流:
I_max = V_ref × 0.9 / (Gain × R_shunt)
比如A2增益100,R_shunt=1.5mΩ,V_ref=3.3V: I_max = 3.3 × 0.9 / (100 × 0.0015) = 19.8A
约等于20A,符合设计目标。
3.4 双向电流检测的实现
便携储能设备既要放电也要充电,所以电流是双向的。INA199本身是单向输出的,输出电压范围是0到V+(接近轨到轨)。当电流反向时,输出会试图降到0V以下,但被钳位在0V附近,无法区分反向电流。
解决方法是加一个偏置电压。具体做法是:在INA199的REF引脚上施加一个稳定的偏置电压,比如V_ref/2 = 1.65V。这样当电流为0时,输出电压是1.65V;正向电流时输出往上走,反向电流时输出往下走。ADC读取的电压减去1.65V,再除以增益和分流电阻,就得到了带符号的电流值。
偏置电压的产生可以用一个简单的电阻分压,但分压电阻的精度和温漂会影响偏置稳定性。更好的方案是用一个精密基准源,比如TL431或者REF3012。如果成本敏感,也可以用MCU的DAC输出或者PWM加RC滤波来产生偏置,但要注意噪声和建立时间。
我在实际项目中用的是电阻分压加一个电压跟随器(用运放缓冲),这样偏置电压的驱动能力足够,不会因为INA199的REF引脚输入电流而漂移。
4. PCB布局与抗干扰实战要点
4.1 开尔文连接是必须的
分流电阻的走线方式直接决定了测量精度。如果你直接把走线连到电阻焊盘的两端,那么焊盘和走线上的电阻也会被算进去,导致实际有效分流电阻比标称值大,测量结果偏大。
正确的做法是开尔文连接(Kelvin Connection),也叫四线制连接。具体来说:
- 大电流走线从分流电阻的两端引出,走线要宽,尽量短,减少寄生电阻。
- 电压检测走线从分流电阻焊盘的内侧引出,单独走一对差分线到INA199的IN+和IN-引脚。
- 电压检测走线不要和大电流走线重叠,避免耦合。
在PCB上,我通常会把分流电阻放在大电流路径的中间,电压检测点选在电阻焊盘的内边缘,这样能最大程度地排除焊盘和走线电阻的影响。
4.2 差分走线与共模干扰抑制
INA199的IN+和IN-是一对差分输入,PCB上这两根线要等长、平行、靠近走线。等长是为了保证差分信号的相位一致,平行靠近是为了让它们感受到相同的共模干扰,这样INA199的共模抑制比才能发挥作用。
如果这两根线走得一长一短、一左一右,那么外界干扰在两根线上产生的噪声不一致,差分输入就无法完全抵消,测量结果就会出现波动。
另外,这对差分线要尽量远离高频开关节点,比如DC-DC转换器的SW引脚、MOSFET的漏极等。如果实在避不开,可以在中间加一层地平面作为屏蔽。
4.3 地平面处理与星形接地
便携储能设备里通常有多个地:功率地(大电流回路)、模拟地(INA199和ADC的参考地)、数字地(MCU和通信接口)。这三个地不能混在一起,否则大电流在地上的压降会串到模拟信号里,导致测量误差。
我的做法是:
- 功率地和模拟地在电源入口处单点连接,形成一个星形接地结构。
- INA199的GND引脚连接到模拟地,不要连接到功率地。
- 分流电阻的电压检测走线以模拟地为参考,不要以功率地为参考。
如果PCB空间允许,我会给模拟地单独划分一个区域,用0Ω电阻或磁珠与功率地连接。这样既能保证直流连通,又能抑制高频噪声。
4.4 旁路电容与输出滤波的布局
INA199的V+引脚旁路电容(0.1μF)必须紧贴芯片引脚放置,走线越短越好。这个电容的作用是提供高频去耦,如果走线太长,电感效应会让去耦效果大打折扣。
输出滤波的RC网络要靠近MCU的ADC引脚,而不是靠近INA199。因为滤波的目的是在ADC采样前把噪声滤掉,放在ADC端效果更好。电阻选1kΩ左右,电容选0.1μF,截止频率约1.6kHz,对于大多数电流检测应用来说足够了。
实操心得:我曾在一個项目中发现电流读数有规律地跳动,周期和DC-DC开关频率一致。排查后发现是INA199的输出走线经过了一个DC-DC电感下方,耦合了开关噪声。后来把走线绕开电感区域,并在输出端加了RC滤波,问题就解决了。所以布局时一定要让敏感模拟走线远离功率电感。
5. 软件校准与数据处理
5.1 校准流程与零点偏移处理
即使硬件设计再完美,实际电路中总会有失调电压和增益误差。所以软件校准是必须的。
校准分两步:零点校准和增益校准。
零点校准:在已知电流为零的条件下(比如断开负载和充电器),读取ADC值,记为ADC_zero。这个值对应INA199在零电流时的输出电压,理想情况下是偏置电压(比如1.65V),但实际会有偏差。
增益校准:施加一个已知的精确电流(比如用电子负载拉5A),读取ADC值,记为ADC_cal。根据公式计算实际增益:
Gain_actual = (ADC_cal - ADC_zero) × V_ref / (ADC_max × I_cal × R_shunt)
其中ADC_max是ADC满量程值(比如12位ADC是4095)。
实际使用时,电流计算公式为:
I = (ADC_read - ADC_zero) × V_ref / (ADC_max × Gain_actual × R_shunt)
零点校准建议在每次上电时自动执行一次,因为温漂会导致零点缓慢变化。但要注意,上电时如果负载没有完全断开,零点校准会引入误差。所以我的做法是:上电后先检测电流是否接近零,如果是则执行零点校准,否则跳过,使用上次存储的零点值。
5.2 数字滤波与过流保护
ADC采集到的原始数据通常会有噪声,直接用来计算电流会导致读数跳动。我通常会用滑动平均滤波或一阶低通滤波来处理。
滑动平均滤波的实现很简单:维护一个长度为N的数组,每次新数据进来就替换最旧的数据,然后求平均。N取8到16比较合适,太大了响应慢,太小了滤波效果不好。
一阶低通滤波的公式是:
filtered = filtered × (1 - α) + raw × α
其中α是滤波系数,取值在0到1之间。α越小滤波越强,但响应越慢。我通常取α = 0.1到0.3。
过流保护是另一个重要功能。当检测到电流超过阈值时,MCU需要快速切断负载或充电回路。这里的关键是响应时间。INA199的带宽是14kHz(A1版本),响应时间在几十微秒级别,对于大多数过流保护场景来说足够了。但软件滤波会引入延迟,所以过流保护通常用原始ADC值来判断,不走滤波后的数据。
我一般会设置两级保护:一级是软件保护,阈值设为最大电流的1.1倍,响应时间约10ms;二级是硬件保护,用比较器直接监测INA199的输出,阈值设为最大电流的1.5倍,响应时间在微秒级别。这样既能保证正常情况下的稳定运行,又能在严重过流时快速切断。
5.3 温度补偿的必要性与实现
分流电阻的阻值会随温度变化,虽然合金电阻的温漂比普通电阻小很多,但在户外储能设备中,温度范围可能从-20°C到60°C,80°C的温差下,即使50ppm/°C的温漂也会导致0.4%的阻值变化。对于精度要求高的应用,这个误差不能忽略。
温度补偿的方法是:在分流电阻附近放置一个NTC热敏电阻,MCU读取温度后,根据电阻的温漂曲线对测量结果进行修正。
修正公式:
R_actual = R_nominal × (1 + TCR × (T - 25))
其中TCR是电阻的温度系数(单位:ppm/°C,注意换算成小数),T是当前温度。
然后把这个R_actual代入电流计算公式。
不过说实话,对于大多数便携储能设备来说,0.4%的误差在可接受范围内,不一定需要温度补偿。但如果你的产品定位高端,或者需要在极端温度下保证精度,那温度补偿就很有必要了。
6. 常见问题与排查技巧实录
6.1 电流读数不准的排查思路
这是最常见的问题。我整理了一个排查流程,按顺序检查:
| 排查步骤 | 检查内容 | 可能问题 | 解决方法 |
|---|---|---|---|
| 1 | 分流电阻实际阻值 | 焊接不良或电阻损坏 | 用四线制毫欧表测量实际阻值 |
| 2 | INA199供电电压 | 供电不足或纹波过大 | 示波器检查V+引脚,确保在2.7V以上且纹波小于50mV |
| 3 | 零点输出电压 | 偏置电压不对或INA199损坏 | 零电流时测量OUT引脚,应在偏置电压附近 |
| 4 | 差分输入压差 | 开尔文连接不正确 | 检查IN+和IN-是否直接从电阻焊盘引出 |
| 5 | ADC参考电压 | 参考电压不稳或不准 | 用万用表测量V_ref实际值,代入计算 |
| 6 | 校准系数 | 校准流程有误 | 重新执行零点和增益校准 |
我遇到最多的问题是开尔文连接没做好。有一次画板时疏忽了,电压检测走线直接从大电流走线上分出来的,结果测量值比实际值大了将近5%。后来改成从焊盘内边缘单独引线,问题就解决了。
另一个常见问题是INA199的REF引脚悬空。如果你用的是双向检测电路,REF引脚必须接偏置电压,不能悬空。悬空时输出会不稳定,读数乱跳。
6.2 输出振荡或噪声过大的处理
INA199的输出振荡通常有几个原因:
- 容性负载过大:INA199的输出如果直接接了一个大电容(比如1μF以上),可能会引起振荡。解决方法是在输出和电容之间串一个几十欧姆的电阻。
- 电源去耦不足:V+引脚的旁路电容失效或走线太长,导致电源阻抗高,形成反馈回路。解决方法是换用更靠近引脚的0.1μF陶瓷电容。
- 输入滤波电容过大:如果在IN+和IN-之间加了过大的差分电容,和分流电阻形成低通滤波,截止频率过低可能导致相位裕度不足。通常差分电容不超过100pF。
噪声过大的问题,除了加RC滤波外,还要检查PCB布局。我遇到过因为INA199的地线走线太长,和功率地形成地环路,引入了大量噪声。后来把INA199的地直接连到模拟地平面,噪声就降下来了。
6.3 温漂导致测量值缓慢变化的应对
温漂问题在户外储能设备中特别明显。早上校准好的设备,中午太阳一晒,电流读数就偏了。
应对温漂的方法有三个层次:
第一层是选低漂移的器件。分流电阻选50ppm/°C以下的合金电阻,INA199本身是零漂移架构,温漂很小。这样从源头上减少温漂。
第二层是定期零点校准。在设备运行过程中,如果检测到电流持续为零超过一定时间(比如30秒),就自动执行一次零点校准。这样能跟踪温漂引起的零点变化。
第三层是温度补偿。如前所述,用NTC监测温度,对分流电阻的阻值进行修正。
避坑技巧:不要用普通贴片电阻做分流电阻。我早期为了省成本用过1206封装的厚膜电阻,结果温漂高达200ppm/°C,夏天和冬天的测量值差了将近2%。后来换成合金电阻,问题彻底解决。分流电阻是电流检测的基准,这个钱不能省。
6.4 INA199损坏的常见原因与预防
INA199虽然皮实,但在便携储能设备中也有损坏的风险。常见原因有:
- 共模电压超限:INA199的共模电压范围是-0.3V到26V。如果电池组电压超过26V,或者因为感性负载反电动势导致电压尖峰超过26V,芯片就可能损坏。预防方法是在输入端加TVS二极管钳位,或者选择更高耐压的型号。
- 电源反接:如果电池接反,INA199的V+引脚可能承受反向电压。虽然INA199内部有一定的保护,但长时间反接还是会损坏。预防方法是在电源入口加防反接二极管或MOSFET。
- ESD损伤:在装配或维修过程中,静电可能通过输入引脚损坏芯片。预防方法是做好ESD防护,在输入引脚加ESD保护二极管。
我在一个项目里遇到过因为电机负载断开时产生的高压反电动势打坏INA199的情况。后来在IN+和IN-到GND之间各加了一个3.3V的TVS二极管,问题就没再出现过。
7. 实测数据与性能评估
7.1 精度测试结果
我在实验室里对这套INA199电流检测方案做了完整的精度测试。测试条件:25°C室温,12V供电,电子负载作为电流源。
| 设定电流(A) | 测量电流(A) | 误差(A) | 相对误差 |
|---|---|---|---|
| 0.5 | 0.51 | +0.01 | +2.0% |
| 1.0 | 1.01 | +0.01 | +1.0% |
| 2.0 | 2.02 | +0.02 | +1.0% |
| 5.0 | 5.03 | +0.03 | +0.6% |
| 10.0 | 10.04 | +0.04 | +0.4% |
| 15.0 | 15.05 | +0.05 | +0.3% |
| 20.0 | 20.06 | +0.06 | +0.3% |
从数据可以看出,小电流时相对误差较大,这是因为小电流时信号幅度小,噪声和失调的影响占比更大。大电流时误差在0.5%以内,表现很好。
如果在小电流场景下需要更高精度,可以考虑用A4版本(增益500),但那样最大可测电流会降到4A左右。所以增益选择本质上是一个量程和精度的权衡。
7.2 温度测试结果
我把设备放在温箱里,从-20°C升到60°C,记录同一电流下的测量值变化。
| 温度(°C) | 测量电流(A) | 相对25°C的变化 |
|---|---|---|
| -20 | 10.12 | +0.8% |
| 0 | 10.08 | +0.4% |
| 25 | 10.04 | 基准 |
| 40 | 10.01 | -0.3% |
| 60 | 9.97 | -0.7% |
全温度范围内的测量误差在±1%以内,对于便携储能设备的电量估算和过流保护来说完全够用。如果做了温度补偿,这个误差还能进一步缩小到±0.3%以内。
7.3 动态响应测试
用电子负载做电流阶跃测试,从1A跳到10A,上升时间约50μs。INA199的输出跟随很好,没有明显的过冲或振荡。这个响应速度对于电池管理系统的过流保护来说绰绰有余。
需要注意的是,如果你在输出端加了RC滤波,响应时间会变慢。1kΩ+0.1μF的滤波网络时间常数是100μs,阶跃响应会延长到约300μs。对于过流保护来说,这个延迟可能有点大,所以过流保护最好用未滤波的原始信号。
8. 方案扩展与进阶优化方向
8.1 多路电流检测的实现
有些便携储能设备需要同时检测多路电流,比如电池总电流、太阳能充电电流、USB输出电流等。这时候可以用多颗INA199,分别放在不同的电流回路上。
多路检测时要注意:
- 每颗INA199的供电和地去耦要独立,避免相互干扰。
- 如果多颗INA199共用同一个偏置电压,偏置源的驱动能力要足够。
- MCU的ADC通道要合理分配,高精度通道留给电池总电流检测。
如果成本压力大,也可以考虑用模拟开关切换多路INA199的输出到同一个ADC通道,但这样会降低采样率,而且开关的导通电阻会影响精度。
8.2 与库仑计方案的对比
INA199做的是瞬时电流检测,如果要估算电池剩余电量(SOC),还需要对电流进行时间积分,也就是库仑计数。
库仑计的实现很简单:每隔固定时间(比如100ms)读取一次电流值,乘以时间间隔,累加到总电量里。但难点在于累积误差。即使电流检测精度达到0.5%,长时间积分后误差也会累积。所以需要定期用电池电压来校正SOC,比如在电池充满或放空时重置库仑计。
INA199方案的好处是你可以完全掌控算法,根据自己的电池特性做精细调校。而专用库仑计芯片虽然方便,但算法是固定的,不够灵活。
8.3 高压储能系统的适配
便携储能设备的电压范围很广,从12V到48V甚至更高。INA199的共模电压范围是26V,对于48V系统就不够用了。
这时候有两个选择:一是用INA199配合分压电阻,把共模电压降到26V以下,但分压电阻会影响差分信号的精度,需要仔细计算;二是换用更高耐压的电流检测芯片,比如INA240(共模电压范围-4V到80V)或INA293(共模电压范围-4V到110V)。
如果只是偶尔需要测高压,也可以用隔离放大器加分流电阻的方案,但成本和复杂度都会上升。
8.4 未来优化方向
从我个人经验来看,INA199方案还有几个可以优化的方向:
- 更高精度的ADC:目前用的12位ADC,分辨率约0.8mA(20A量程)。如果换成16位ADC,分辨率可以到0.05mA,小电流检测精度会大幅提升。
- 数字温度补偿:目前温度补偿是手动的,未来可以把NTC的读数自动代入补偿公式,实现全自动温度补偿。
- 自诊断功能:定期检测INA199的输出是否在合理范围内,如果超出范围则判断为传感器故障,触发报警。这对于安全关键的储能设备很有必要。
我在实际使用INA199做便携储能电流检测的这几年里,最大的体会是:硬件设计决定了精度的上限,软件校准决定了精度的下限。再好的芯片,如果PCB布局一塌糊涂,也测不准;再普通的芯片,如果校准到位、滤波合理,也能满足大多数应用需求。INA199是一颗很平衡的芯片,它不会让你惊艳,但也不会让你失望。关键是你要理解它的特性,在设计中扬长避短。
最后分享一个小技巧:如果你在调试时发现电流读数总是偏大或偏小,先别急着改代码,用万用表量一下分流电阻的实际阻值。我遇到过好几次因为电阻焊接不良导致实际阻值偏大,换了电阻就好了。这个排查步骤花不了两分钟,但能省下你半天调代码的时间。