小聪同学
1
大家好,我正在制作一款 DIY 电池测试仪 / 电子负载,用到了 ESP32、TFT 显示屏以及其他一些有趣的元件。这个项目的核心是一个带反馈环路的电流吸收器,配有数字控制设定点。虽然我对设计改进有一些想法(我承认自己做了几个不太恰当的选择),但目前最头疼的问题出在 INA226 的电流测量上。
问题描述:
当 PCB 端子输入电压较低(比如约 4V)时,我尝试增大电流,发现 INA226 的读数低于实际电流(用数字万用表验证过),且存在非线性。随着设定电流的增大,这种偏差会越来越明显。
- 该问题在电流超过约 50mA 时出现;
- 当输入电压较高(约 18V)时,问题几乎消失;
- 有趣的是,反馈环路的设定值与实际电流非常接近 —— 通常误差在 ±0.5mA 以内。
所以本质上,我的负载工作符合预期,但 INA226 在低电压下似乎会 “低报” 电流值。
疑问:
- 有人遇到过 INA226 在带载低总线电压下出现这种表现吗?
- 这可能与分流电压降、I2C 时序或其他因素有关吗?
- 在此场景下,有哪些稳定读数或提高测量精度的建议?
如需进一步信息,我可以分享更多照片、接线图、代码片段或完整的 KiCad 项目文件。非常感谢大家的指导或类似经验分享!
zeruns
2
你有没有考虑过 C1 和 R4 相互作用可能引发的稳定性问题?这会给运算放大器的反相输入端带来延迟,再加上达林顿管引入的延迟,可能足以导致振荡或某种振铃现象。
小聪同学
3
我承认之前没考虑到这一点。我的思路是,既然电池电压稳定,就不需要快速调整,用RC低通滤波器可以降低噪声/振荡。我肯定会用示波器检查这个问题。
另外,忘了提一句,Q1已经从2N2222换成了BD139。
CCC
4
您反馈回路中的RC低通滤波器(C1和R4)可能是罪魁祸首,正如回复中提到的。在低输入电压下,环路延迟(来自RC和达林顿晶体管Q1)可能导致相移,从而引起电流调节不稳定,进而导致INA226读数失真。尝试减小RC时间常数——使用更小的电容C1(例如从100nF改为10nF)或电阻R4——以加快反馈响应速度。此外,由于您已将Q1更换为BD139,请确保其基极驱动足够;驱动不足会导致晶体管工作在线性区,增加电流非线性。使用示波器观察分流电压波形——如果出现振铃或振荡,在分流电阻两端并联一个小型缓冲电容(例如10pF)可能有助于稳定信号。
ABC
5
先把现象拆开看:
-
电流环本身没问题(设定值≈实测值),说明 MOSFET、运放、DAC 那条闭环工作正常;
-
只有 INA226 的“报告值”偏低,而且偏偏发生在 VBUS 低、电流大的时候;
-
18 V 下几乎看不到误差。
这几乎把矛头直接指向“分流电阻两端共模电压过低”导致的器件级测量误差,而不是代码或 I²C 时序。
-
共模太低,内部 PGA 开始“偷懒”
INA226 的输入级是 ΔΣ 型 ADC,前级有一个 2 MHz 开关电容阵列。共模电压越低,内部采样保持的电荷注入失配越明显,等效失调会被放大。数据手册里写得清楚:VCM = 0 V 时典型失调 50 µV,VCM ≥ 1 V 时降到 10 µV 量级。你 4 V 输入、50 mA 电流,假如分流电阻 50 mΩ,那么 VBUS 实际被拉到 4 V – 2.5 mV ≈ 3.9975 V,共模仍算“低”,但更严重的是分流电压只有 2.5 mV,已经与失调电压同量级;电流再往上走,读数就开始“缺斤短两”。
-
分流电阻的 Kelvin 走线/焊盘热电偶效应
低压大电流时,1 µΩ 的额外金属电阻就会带来 1 µV 的误差。如果顶层铜箔被“吃”掉很多,或者取样点离焊盘太远,实际加到 INA226 的 Vshunt 会比万用表测到的低。
-
板内地弹(ground bounce)
功率地、数字地、INA226 的 GND 如果共用一段细线,50 mA 的开关尖峰就能拉出几百 µV 的地差,直接叠在差分测量上。
-
I²C 时序/噪声
这类误差一般是“跳动”或“码值闪烁”,而不是系统性的偏低,因此优先级往后放。
改进清单(按投入产出比排序)
A. 把分流电阻改到“高侧”
让 INA226 的 VBUS 脚直接坐在电池正极,这样共模≈4 V,远高于 1 V 的“舒适区”,器件失调立刻降一个数量级。高侧测量需要:
– 分流电阻挪到正端;
– INA226 的 V+ 供电可以 3.3 V,因为共模允许 36 V;
– 注意新走线必须 Kelvin,且与功率路径分开。
B. 加大分流电压
如果最大电流 1 A,把 50 mΩ 换成 100 mΩ,满量程 100 mV,LSB 仍是 2.5 µV,但信号/失调比翻倍。功耗 100 mW,对 1 A 应用可接受。
C. 校准“零偏”
在代码里做一次“零电流”采样(继电器断开或 DAC=0),把结果存入 EEPROM,每次正式测试前减掉。INA226 本身带 Calibration 寄存器,但那只对功率/电流计算有效,对原始分流电压无效;所以直接读 Shunt Voltage Register 然后减偏移最干脆。
D. 布板二次小手术
– 功率地、数字地分区后单点连接;
– INA226 下方整层作“模拟地”铜皮,与功率地只通过 0 Ω 电阻或排针单点汇合;
– 分流电阻焊盘内侧打两对 Kelvin via,差分走线平行走内层,长度<15 mm。
E. 软件滤波
采集 64 次做平均,再把结果通过二阶 IIR 平滑,能把随机噪声压到 0.2 LSB 以下,但对系统性失调无效,只能配合 A/B/C 使用。
快速验证方法
-
临时用实验室电源串 1 Ω 电阻,把 VBUS 人工抬高到 8 V 以上,看误差是否立刻缩小;
-
用精密毫伏源(或 DAC+分压)直接向 INA226 差分脚注入 1 mV、5 mV、10 mV,读 Shunt Voltage Register,画出“输入-码值”曲线,可一眼看出器件本身线性区。
通常做完 A+B+C 三项,就能把 4 V/1 A 点的误差压到 ±0.5 %FS 以内,剩下的只是软件校准问题。祝调试顺利!
9527
6
根据您的描述,INA226在低输入电压(例如4V)和大电流情况下显示低于实际值且非线性的电流读数,而在高电压(18V)时问题消失,该问题可按以下方式分析和解决:
1. 共模电压和分流电压降
INA226的共模电压范围至关重要。它要求V- ≤ VCM ≤ V+(其中V-为地,V+通常为总线电压)。然而,分流电阻上的电压降(I×Rshunt)会改变采样电压。当输入电压较低(例如4V)时,增大电流会导致采样端的共模电压接近或低于INA226的最小共模工作电压,从而导致测量精度下降和非线性。
例如,如果您的分流电阻为0.02Ω(根据原理图中的R5=0.02Ω推断),在500mA时电压降为10mV。在4V总线电压下,由于此压降,采样点的共模电压降低,接近INA226共模范围的下限,从而导致测量偏差。在18V时,分流压降可忽略不计,因此共模电压保持在正常范围内。
2. 分流电阻功耗和温度漂移
分流电阻在大电流下会发热,导致电阻随温度变化(温度漂移),从而引起非线性测量。特别是在低电压和大电流情况下,分流电阻的功耗(I²×R)显著,导致明显的温升和电阻变化,使得从采样电压计算出的电流值偏离实际值。
3. I2C时序和通信稳定性
尽管反馈环路工作正常,但INA226的I2C通信在低压供电下可能存在时序偏差。请检查INA226的供电电压(原理图中来自AMS1117的3.3V)在低总线电压下是否稳定。此外,I2C的上拉电阻和通信速度(例如超过器件支持的速率)也会影响数据读取的准确性,导致读数偏差。
4. 电路布局和噪声干扰
分流电阻布线中的寄生电感或电阻,或与其他高频电路(如TFT显示屏和ESP32的高频信号)的串扰,也会影响采样精度。特别是在低压小信号场景下,噪声的影响会被放大。
稳定读数和提高精度的建议
- 共模电压优化:确保INA226的共模电压始终在其规格范围内。尝试调整分流电阻值(例如选择更小的阻值以降低电压降,同时兼顾功耗和分辨率),或在低电压场景下限制最大电流,以避免共模电压过低。
- 分流电阻选择:使用低温度系数的合金电阻(如锰铜合金),并确保足够的功率裕量(至少为实际功耗的两倍),以减小温度漂移的影响。同时,优化分流电阻的散热设计,例如增加散热焊盘或铜箔面积。
- I2C通信优化:降低I2C通信速度(例如从400kHz降至100kHz),检查上拉电阻值是否匹配(3.3V系统通常为4.7kΩ左右),并确保ESP32与INA226之间的I2C时序严格符合器件手册要求。还可以在INA226的V+引脚并联10μF和0.1μF的去耦电容,以提高供电稳定性。
- 电路布局改进:使分流电阻的采样线尽可能短而粗,以减小寄生参数;将INA226远离高频干扰源(如TFT显示屏驱动电路),必要时对采样线进行屏蔽或采用单点接地。
- 软件校准与补偿:在代码中为低电压场景建立校准表,并根据输入电压和设定电流对INA226读数进行补偿。例如,使用数字万用表测量不同电压和电流下的偏差,拟合补偿函数,并在软件中实时校正。