大家好,我正在制作一款 DIY 电池测试仪 / 电子负载,用到了 ESP32、TFT 显示屏以及其他一些有趣的元件。这个项目的核心是一个带反馈环路的电流吸收器,配有数字控制设定点。虽然我对设计改进有一些想法(我承认自己做了几个不太恰当的选择),但目前最头疼的问题出在 INA226 的电流测量上。
问题描述:
当 PCB 端子输入电压较低(比如约 4V)时,我尝试增大电流,发现 INA226 的读数低于实际电流(用数字万用表验证过),且存在非线性。随着设定电流的增大,这种偏差会越来越明显。
- 该问题在电流超过约 50mA 时出现;
- 当输入电压较高(约 18V)时,问题几乎消失;
- 有趣的是,反馈环路的设定值与实际电流非常接近 —— 通常误差在 ±0.5mA 以内。
所以本质上,我的负载工作符合预期,但 INA226 在低电压下似乎会 “低报” 电流值。
疑问:
- 有人遇到过 INA226 在带载低总线电压下出现这种表现吗?
- 这可能与分流电压降、I2C 时序或其他因素有关吗?
- 在此场景下,有哪些稳定读数或提高测量精度的建议?
如需进一步信息,我可以分享更多照片、接线图、代码片段或完整的 KiCad 项目文件。非常感谢大家的指导或类似经验分享!
你有没有考虑过 C1 和 R4 相互作用可能引发的稳定性问题?这会给运算放大器的反相输入端带来延迟,再加上达林顿管引入的延迟,可能足以导致振荡或某种振铃现象。
我承认之前没考虑到这一点。我的思路是,既然电池电压稳定,就不需要快速调整,用RC低通滤波器可以降低噪声/振荡。我肯定会用示波器检查这个问题。
另外,忘了提一句,Q1已经从2N2222换成了BD139。
您回授迴路中的RC低通濾波器(C1和R4)可能是問題所在,如回覆中所提到的。在低輸入電壓下,迴路延遲(來自RC和達靈頓電晶體Q1)可能導致相位偏移,造成電流調節不穩定,從而使INA226讀數失真。請嘗試減小RC時間常數——使用較小的電容C1(例如從100nF改為10nF)或電阻R4——以加快回授響應。此外,由於您將Q1更換為BD139,請確保其基極驅動充足;驅動不足會使電晶體工作於線性區域,增加電流非線性。請使用示波器觀察分流電壓波形——如果出現振鈴或振盪,在分流電阻兩端並聯一個小型緩衝電容(例如10pF)可能有助於穩定訊號。
先把现象拆开看:
-
电流环本身没问题(设定值≈实测值),说明 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 以内,剩下的只是软件校准问题。祝调试顺利!
根據您的描述,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 讀數進行補償。例如,使用數位萬用表測量不同電壓和電流下的偏差,擬合補償函數,並在軟體中即時修正。