# INA226 测量偏移/非线性问题

**URL:** <https://bbs.eeclub.top/t/topic/206>\
**Category:** 模拟电子 / Analog Electronics\
**Tags:** DIY, INA226, QA, TI, Electronic-Load\
**Created:** [2025 年11 月 12 日 16:51 UTC](https://bbs.eeclub.top/t/topic/206 "2025-11-12T16:51:35Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

作者： ![小聪同学](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/%E5%B0%8F%E8%81%AA%E5%90%8C%E5%AD%A6/32/590_2.png) [@小聪同学](https://bbs.eeclub.top/u/%E5%B0%8F%E8%81%AA%E5%90%8C%E5%AD%A6)\
发布日期： [2025 年11 月 12 日 16:51 UTC](https://bbs.eeclub.top/t/topic/206/1 "2025-11-12T16:51:35Z")

</div>

大家好，我正在制作一款 DIY 电池测试仪 / 电子负载，用到了 ESP32、TFT 显示屏以及其他一些有趣的元件。这个项目的核心是一个带反馈环路的电流吸收器，配有数字控制设定点。虽然我对设计改进有一些想法（我承认自己做了几个不太恰当的选择），但目前最头疼的问题出在 INA226 的电流测量上。

**问题描述：**

当 PCB 端子输入电压较低（比如约 4V）时，我尝试增大电流，发现 INA226 的读数低于实际电流（用数字万用表验证过），且存在非线性。随着设定电流的增大，这种偏差会越来越明显。

- 该问题在电流超过约 50mA 时出现；
- 当输入电压较高（约 18V）时，问题几乎消失；
- 有趣的是，反馈环路的设定值与实际电流非常接近 —— 通常误差在 ±0.5mA 以内。

所以本质上，我的负载工作符合预期，但 INA226 在低电压下似乎会 “低报” 电流值。

**疑问：**

1. 有人遇到过 INA226 在带载低总线电压下出现这种表现吗？
2. 这可能与分流电压降、I2C 时序或其他因素有关吗？
3. 在此场景下，有哪些稳定读数或提高测量精度的建议？

如需进一步信息，我可以分享更多照片、接线图、代码片段或完整的 KiCad 项目文件。非常感谢大家的指导或类似经验分享！

 ![](https://s3.eeclub.top/original/2X/e/ee3580041d6c3507b2c96f2e47615b2eb479a517.png)

 ![](https://s3.eeclub.top/original/2X/d/dea6674b11765d039b83adc9dcafc7098f52af20.png)

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2025 年11 月 12 日 16:57 UTC](https://bbs.eeclub.top/t/topic/206/2 "2025-11-12T16:57:24Z")

</div>

你有没有考虑过 C1 和 R4 相互作用可能引发的稳定性问题？这会给运算放大器的反相输入端带来延迟，再加上达林顿管引入的延迟，可能足以导致振荡或某种振铃现象。

---

<div class="post-metadata">

作者： ![小聪同学](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/%E5%B0%8F%E8%81%AA%E5%90%8C%E5%AD%A6/32/590_2.png) [@小聪同学](https://bbs.eeclub.top/u/%E5%B0%8F%E8%81%AA%E5%90%8C%E5%AD%A6)\
发布日期： [2025 年11 月 12 日 16:58 UTC](https://bbs.eeclub.top/t/topic/206/3 "2025-11-12T16:58:18Z")

</div>

我承认之前没考虑到这一点。我的思路是，既然电池电压稳定，就不需要快速调整，用RC低通滤波器可以降低噪声/振荡。我肯定会用示波器检查这个问题。

另外，忘了提一句，Q1已经从2N2222换成了BD139。

---

<div class="post-metadata">

作者： ![CCC](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/ccc/32/595_2.png) [@CCC](https://bbs.eeclub.top/u/CCC)\
发布日期： [2025 年11 月 12 日 17:00 UTC](https://bbs.eeclub.top/t/topic/206/4 "2025-11-12T17:00:13Z")

</div>

您反馈回路中的RC低通滤波器（C1和R4）可能是罪魁祸首，正如回复中提到的。在低输入电压下，环路延迟（来自RC和达林顿晶体管Q1）可能导致相移，从而引起电流调节不稳定，进而导致INA226读数失真。尝试减小RC时间常数——使用更小的电容C1（例如从100nF改为10nF）或电阻R4——以加快反馈响应速度。此外，由于您已将Q1更换为BD139，请确保其基极驱动足够；驱动不足会导致晶体管工作在线性区，增加电流非线性。使用示波器观察分流电压波形——如果出现振铃或振荡，在分流电阻两端并联一个小型缓冲电容（例如10pF）可能有助于稳定信号。

---

<div class="post-metadata">

作者： ![ABC](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/abc/32/101_2.png) [@ABC](https://bbs.eeclub.top/u/ABC)\
发布日期： [2025 年11 月 12 日 17:07 UTC](https://bbs.eeclub.top/t/topic/206/5 "2025-11-12T17:07:10Z")

</div>

先把现象拆开看：

1. 电流环本身没问题（设定值≈实测值），说明 MOSFET、运放、DAC 那条闭环工作正常；

2. 只有 INA226 的“报告值”偏低，而且偏偏发生在 VBUS 低、电流大的时候；

3. 18 V 下几乎看不到误差。

这几乎把矛头直接指向“分流电阻两端共模电压过低”导致的器件级测量误差，而不是代码或 I²C 时序。

1. 共模太低，内部 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，已经与失调电压同量级；电流再往上走，读数就开始“缺斤短两”。

2. 分流电阻的 Kelvin 走线/焊盘热电偶效应  
低压大电流时，1 µΩ 的额外金属电阻就会带来 1 µV 的误差。如果顶层铜箔被“吃”掉很多，或者取样点离焊盘太远，实际加到 INA226 的 Vshunt 会比万用表测到的低。

3. 板内地弹（ground bounce）  
功率地、数字地、INA226 的 GND 如果共用一段细线，50 mA 的开关尖峰就能拉出几百 µV 的地差，直接叠在差分测量上。

4. 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. 临时用实验室电源串 1 Ω 电阻，把 VBUS 人工抬高到 8 V 以上，看误差是否立刻缩小；

2. 用精密毫伏源（或 DAC+分压）直接向 INA226 差分脚注入 1 mV、5 mV、10 mV，读 Shunt Voltage Register，画出“输入-码值”曲线，可一眼看出器件本身线性区。

通常做完 A+B+C 三项，就能把 4 V/1 A 点的误差压到 ±0.5 %FS 以内，剩下的只是软件校准问题。祝调试顺利！

---

<div class="post-metadata">

作者： ![9527](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/9527/32/779_2.png) [@9527](https://bbs.eeclub.top/u/9527)\
发布日期： [2025 年11 月 12 日 17:08 UTC](https://bbs.eeclub.top/t/topic/206/6 "2025-11-12T17:08:15Z")

</div>

根据您的描述，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读数进行补偿。例如，使用数字万用表测量不同电压和电流下的偏差，拟合补偿函数，并在软件中实时校正。
