01
性能指标(已实测)
-
小电流档相对精度(5.1Ω):±(0.55%+0.5μA)
-
大电流档相对精度(10 mΩ):±(0.1%+0.5 mA)
-
测量分辨率:0.1μA/0.1 mA/1mA
-
电流量程:1μA∼8 A (Max)
-
电压量程:3.3 V∼36 V
-
物理采样率:≥7 kHz
项目的功能,主要围绕2大接口、本地功能、上位机功能展开描述:
02
功率接口

-
Type-C 接口:CC 默认直通,DP/DN 直通,可成功透传 PD/QC 及其各类私有协议。
-
排母接口:兼容标准杜邦线连接,便于日常开发调试。
-
XT30 接口:专为5 A∼8 A 大电流设计的接口。由于双 MOS 损耗较大,建议持续工作电流不超过3 A;当 VBUS≤9 V时需进一步降额使用。(一般用不到,多档位方案不适合长期大电流)
03
信号接口

-
SWD:单线调试引脚,用于WCH-Link烧录与调试。
-
TX:TTL 串口输出引脚,默认速率为1.5 M∼2 M,用于连接上位机。
-
GND:数字地,配合SWD/TTL使用,请勿将其作为功率地(PGND)使用。
04
本地功能

-
基础页:同屏显示输出电压、电流、功率,右侧指示当前档位。
-
曲线页:支持三档时基缩放,具备峰值/实时值/平均值统计。
-
统计页:支持0.01mAh/0.01mWh电量/能量的积分累计。
05
上位机

-
适配VOFA+开源上位机,界面流畅,交互直观。
-
提供基于PyQt5的上位机,支持开发区域测量、事件分析等多项高级功能,个人认为已达到可用级别。
-
提供配有OCR的工具套件,涵盖校准电压、零点、电流三大基础标定项,以及信噪比、采样率测算等额外分析项。

-
信号部分电路大同小异,节省时间仅介绍一下各引脚分配情况。
-
功率部分稍有创新,会重点介绍。
01
信号
这部分主控采用CH32V003J4M6 (SOP8),在仅有的6 个I/O下实现了整体设计。
等效信号架构图:

-
PD1兼具SWD与按钮1功能;PD6兼具UART串口发送与按钮2功能。
-
PA2引脚用于监听INA226的ALERT中断信号,实现硬件过流升档。
-
PC4引脚驱动MOS网络,完成Ω与mΩ采样电阻的切换。
-
PC1/PC2硬件I2C引脚驱动OLED屏幕与INA226,未启用EEPROM。
02
功率
系统支持最高36V的工作电压输入,配备了硬件级反接保护。
等效功率路径图:

(1) 防护电路

-
过压防护:电源入口处配置了 TVS,用以吸收热插拔瞬间产生的尖峰高压浪涌。
-
反接防护:采用 PMOS 构成的反接保护电路,提供相比二极管更低的发热与压降损耗。
-
栅极限压:PMOS 栅极(G极)配有泄放稳压电路,确保在输入高电压(>
20 V)时,其栅源电压 VGS 不会超过器件击穿阈值。上拉和泄放回路在采样前级取电,不会对测量精度产生干扰。
(2) 逻辑供电

-
高耐压 LDO:采用支持最高 40 V 输入的 线性稳压器,封装选用散热面积更大的 SOT-223,保证在高压差工况下不过热。
-
数字供电隔离:LDO 前端的隔离二极管D6,当功率链路发生电流抽载导致电压跌落时,该二极管能阻断 LDO 向外倒流,保障单片机不断电。
(3) 采样电阻切换
-
输入电流首先到达INA226的
IN+采样检测点。
-
通过由单片机CTRL引脚控制的复合MOS切换网络进行双档位切换:
-
防掉电续流保护:在μA 档位下工作时,若系统突发瞬态电流冲击,采样电阻上的压降将迅速扩大。一旦跌落电压超过并联二极管D2 的导通阈值,大电流将直接通过 D2 旁路流出。这能有效避免因采样分压过大导致后端负载意外掉电,同时保护电阻RHIGH不被超额功耗烧毁。

-
A 档(大电流档):电流流经RLOW采样电阻和Q2功率开关后输出至VOUT。此时,模拟开关S2截止,S1 导通,SEN1检测点作为实际的采样负端IN−。工作状态原理图如下,其中蓝色代表采样检测线,绿色代表主电流通路。

-
μA 档(小电流档):Q2开关截止,电流流经由RLOW+RHIGH 组成的 Ω 级精密采样电阻输出至 VOUT。此时,模拟开关S2导通,S1截止。采样点即为VOUT。工作状态原理图如下,其中蓝色代表采样检测线,绿色代表主电流通路。

01
校准流程
教程前的说明(必看)
-
这里所提及的精度为相对精度,即相较于基准设备的偏差,至于基准设备自己会不会偏差那我觉得答案应该是会的。
-
校准流程需严格按照此文档顺序,校准脚本1~4需要刷入校准专用固件,他们的特点是串口速率设置为2 M。
-
校准脚本5、6以及上位机需要在正式固件中运行,他们的串口被设定为1.5 M。
-
所有脚本都可针对自身情况修改,设备若支持通讯可实现深度自动化校准。
需求工具
-
可调电源(能输出就行)
-
T21L及以上万用表(电压、电流、电阻)
-
WCH-LINKE(烧录、串口)
-
负载(μA 档可用贴片电阻,A 档水泥电阻,或电子负载)
-
摄像头(可选,用于OCR识别读数)
(0) 采样电阻计算器(可选)
可快速计算采样电阻阻值对应的最大量程与分辨率。用户可根据需要选择采样电阻阻值。
-
RLOW 推荐10∼20 mΩ
-
RHIGH 推荐5.1∼100 Ω。

(1) 电压校准
电压校准是所有后续流程的基准,这是判断INA226真伪的最直观方案。
电压线性曲线
经过实测,在3 V∼36 V 范围内,单点 LSB 的最大极差在1750 nV,若只关注3.3 V∼36 V,则最大极差在 750 nV。
经过 @御坂美琴我老婆 的提醒,3 V∼3.3 V 异常可能是由于 VCC 电压跌落导致,但我必须得说,nV 级别的测量远超我基准设备精度,我用绿色面积展示基准精度以便观察。

-
如果没有高精度的基准设备(六位半),偏差不大可以直接填写1,250,000 nV。
-
但我测试了多块 INA226,有个别地址是 0x44 的假片,其内部基准源偏差巨大,LSB 平均在1,182,000 nV,差值高达68,000 nV(误差近 5.4%5.4%),经过校准后也能用,但不建议。
1.1 电压校准流程
-
将设备接入可调电源,使用万用表测量输出端电压,将实测值 OCR或手动录入。

-
电压一般仅需快速测量3-5个点即可,输入Y后会显示所有测量的点位统计。

(2) 电流零点校准
在实际测试中,在3V 依旧存在一个异常抖动,猜测同由 VCC 引起。此外还呈现出明显的单调递增,经过排查是由于 INA226 的 VBUS 引起,但结合利弊我依旧选择了当前方案,下面会详细说明。
2.1 uA档零点曲线
-
VBUS引脚接入VMAIN:只能测量输入电压,将无法使用电阻校准电流,且输出容量计量不准确,但没有抽电影响。以下是实测图:

-
VBUS引脚接入VOUT:可测量精确输出电压,计量准确,虽然会抽取电流,但只是一个典型值为 850 kΩ 的固定负载,由图可见明显的线性关系,可通过校准补偿,以下是实测图:

2.2 A档零点曲线
对于A 档位来说,VBUS 抽走的电流不值一提,整体曲线与接入 VMAIN 引脚的μA 档趋势相似,总体都呈现为高点迅速跌落后再缓慢升高,其成因推测与 INA226 的 CMRR 与Ib 等有关,经过校准影响不大,故暂不深究。

2.3 校准流程
针对不同输入电压下的不同零点,我设计了动态零点补偿算法。它通过记录关键拐点,随后再进行线性映射补偿,以下是具体校准方法。
-
启动 Python 脚本,确认串口号并填入上一步校准得到的 cal_v_lsb_nv,确保设备未接入任何负载后点击“开始录制数据”。

-
缓慢调节可调电源,将电压从3 V 连续提升至
36 V。脚本会实时记录每个电压点对应的SRAW 原始底数。
-
按下设备左键切换电阻档位。等待 1 秒缓冲后将电压从36 V 再次缓慢调节回3 V。最后点击“停止录制并调参”。
-
RDP 算法可将采样点压缩,直接生成标准的 C 语言结构体代码。需要注意的是,受限于 Flash 容量,最好确保两档位相加的拐点不超过 30 个,否则可能无法成功编译。

-
固件更新:将生成的 table_10mr 和 table_100r 数组复制并替换到 power_app.c 中。

(3) 电阻阻值校准
虽然该设备检流网络较为复杂,但反而可以自由搭配电阻。因为我们会通过校准来倒推电阻的阻值,不依赖电阻精度,只需要尽可能关注温漂这一个参数。
在经过零点校准后,此时电流值的线性比预期要好,但在首尾还是有些许抖动,但这有可能是基准设备导致。


> 右侧(8A点位)异常升高推测由温漂引起,再次强调不建议大电流使用
3.1 测量策略
μA 档
-
如果万用表能够测出0.1 μA 电流,可以直接选用电流档作为基准。
-
如果不能,我们可以用已知阻值的负载,配合第一步就校准过的电压值,利用欧姆定律(I=V/R)倒推出真实电流。(VBUS 引脚必须接入 VOUT)
A 档位
- 此档位下采样电阻功率较大,且负载阻值会随温度漂移。推荐直接使用万用表的电流档串联在回路中,以万用表的实时读数作为校准基准。
3.2 校准流程
-
可选在目录下编辑 resistors.txt,填入你准备好的电阻阻值或电流点( 如 100KR, 10R, 1.5A ),系统会自动按顺序执行。
-
如果没有检测到resistors.txt,运行校准脚本后可选择启用OCR或手动输入。

-
你可以随时输入 Y 结束取样并进入计算阶段,在计算阶段中填入之前测试的已知变量(来自校准1、2)

-
调整压缩等级,将生成的 GainPoint_t 结构体代码复制回工程文件中。(受FLASH限制校准点相加最好不超过20个)

(4) 精度测试与预测+采样率档位介绍(可选)
这部分的精度指INA226的噪声与信噪比,设备的整体精度会在更后面测试。
4.1 档位
在INA226中,有0~7共8档采样率,我分别测试了他们之间的关系,同时我也测试了很多人关注的TPA626。

我们可以看出,随着档位的提高,无论是INA226还是TPA626的噪声都在迅速降低。但值得注意的是,626的噪声远大于226。
> TPA626对于IIC的要求更严格,多数项目可能并不兼容。

可以看出,TPA626提升档位时带来信噪比的提升有限,这说明TPA626的噪声大概率并非白噪声主导。

此外,虽然从规格书中TPA626的转换时间在同档位比INA226更快,但实测下来,他们惊人的相似。
4.2 超采样
以下是我提供的第五个工具,从1.947的LSB能看出,这是工作在档位1的INA226,你可以使用此工具计算达到目标分辨率与信噪比所需的平均值次数,还能直观看出你的INA226是否正常,蓝色曲线为理论计算的最佳曲线,而红色是实测,如果红色越贴近蓝色,说明超采样有效。

这个数据实在太漂亮了,即使平均次数超过1024次依然有可观提升,这说明INA226中完全随机的白噪声几乎占据主导,我们可以根据这一特性来突破原本的分辨率限制。
在正常情况下,使用5.1 Ω 采样电阻,你能得到的最高分辨率就是490.20 nA,也就是 0.49 μA。

但依靠超采样,我们只需要进行1024次平均,就可以提供0.1μA的分辨率,同时SNR≥3,也就是几乎不会抖动。
所以这里会出现一个反常识的地方,对于INA226这种 ΔΣADC 来说,给予其更长的积分时间会比后期处理更有效,但我们进行超采样反而非常依赖噪声。如果你真的开高档位,输出无噪声无抖动的数据,反而会导致超采样失效,例如:

综合下来前两个档位性价比最高,上位机使用 CT0 档位,提供最高7.2 kHz 采样率,并可由上位机进行二次滤波处理。CT1 搭配 1024 次平均用作单机本地数据显示。
> 值得注意的是,平均处理必须依靠MCU后处理,这样才能取得超过16bit的分辨率
在固件中你可以配置使用的采样档位:
**

**
以及平均次数:
(5) 降档阈值计算器
至此,你已经完成了在校准固件中的测试项,可以刷入主固件,同时继续进行后续步骤。
由于固件并不限制采样电阻,所以触发降档的LSB截然不同,此计算器可以快速计算阈值,并允许按系数调整。

-
如果系数 > 1,可能会导致硬件触发降档后又瞬间触发升档,这不会造成损坏,但会导致切档时期数据丢失。
-
如果系数 < 1,更保险,但一般无需。
-
在系数 = 1 时,日常使用足够,但我得说降档是依靠软件的,可能并不稳定(尤其是 100 Ω+10 mΩ 这种组合,降档可能粘滞)。
-
下面为5.1 Ω+10 mΩ 的测试
(6) 有效采样率(可选)
由于唯一的 ALERT 引脚被用来升档使用,我们没有同步机制,但 INA226 内部的采样时间是存在偏移的。由规格书可知,CT0 的采样速度最大为154 μs。

如果我们以固定的140μs时间提取数据,将不可避免有大约1%的数据点同步失败,此时的真实有效帧率大约降低到7.06kHz。但值得注意的是,受到芯片体制影响,有的重复率会更低。
我测试了从135μs∼150μs的数据:

可以发现,141 μs 为性价比最高的设置,如果超频,重复率会快速升高,且有效帧提升不大。如果降频,重复率下降不明显,且有效帧率也在快速下降。
数据重复的具体表现为曲线突然变平,但整体而言还算可以接受

这个间隔在固件中同样可以快速配置,并根据使用档位自动选择分支。

02
精度
我会按照三种难度来测试,测试视频会在最后一起放出。
-
电压不变,负载与校准相同,此情况仅为测量理想情况下校准系统是否正常工作。
-
电压不变,负载与校准不同,常见情况,此时电阻校准开始动态补偿,脱离最优情况。
-
电压改变,根据欧姆定律,此时电流也跟跟随改变,此时需要同时进行动态零点补偿与动态电流补偿,此测试为理论最差情况。
由于负载有限,有些我只测了部分量程。
(1)μA 档位(难度 1)
实测精度:
±(0.56%+0.1 μA),全量程

(2)μA 档位(难度 2)
实测精度: ±(0.27%+0.4 μA),453 μA∼15 mA 范围(负载限制)

(3) μ**A**μA 档位(难度 3+)
实测精度:±0.50 μA,2.2 μA∼22 μA(负载限制)

(4) A**A 档位固定电压(难度 1)**
±(0.06%+0.50 mA),300 mA∼1.2 A(负载限制)

(5) A**A 档位调整电压(难度 3)**
±(0.09%+0.03 mA),300 mA∼1.35 A(负载限制)

”
其次就是INA226,价格浮动较剧烈,假货很多,建议会员日用11-10买,或者找绝对可靠的店铺用-2券。
在多档位电流表中,当进行档位切换或负载电流发生突变时,电流会优先对测量回路中的寄生电容进行充放电。只有当电容两端的电压稳定后,真实反映电流大小的电压信号才会呈现在采样电阻两端。因此,如果并联在采样路径上的寄生电容过大,将会直接拖慢电路的动态响应速度,导致高频测量失真。
在项目初期,我并未进行严密的容值计算,本着求稳的心态直接选取了较低寄生电容的器件。我提取了各元件在极限状态(如 VDS≈0V)下的标称参数:
-
信号N-MOS(VDS≈0V时):Crss≈16 pF, Coss≈26 pF,Ciss≈40 pF
-
信号 P-MOS (−VDS≈0V 时):Crss≈5 pF, Coss≈13 pF, Ciss≈22 pF
-
续流肖特基二极管 (VR≈0V 时):Cj≈1050 pF
-
功率 P-MOS (VDS=−20V,VGS=0V,f=1MHz):Crss≈215.3pF,Coss≈270.9pF,Ciss≈2000pF
(2)暴力计算
在我们的电路拓扑中,一般Rhigh≤100Ω 。
我们采用最坏的情况估算,完全无视电路的物理结构隔离,强行将上述所有器件的所有种类电容(不管是输入、输出还是反向电容)全部相加:
Ctotal_abs≈∑(Ciss+Coss+Crss+Cj)≈4000 pF=4 nF
我们将这个高达4 nF 的夸张电容值,带入最大采样电阻100Ω 中,计算一阶RC电路的时间常数τ:τ=R×Ctotal_abs=100Ω×4×10−9F=400 ns=0.4μs
在工程上,信号达到99.3%的稳定状态需要经过5τ 的时间。因此,在这个“不可能存在的极限恶劣电路”中,电压建立时间为:tsettle=5τ=5×0.4μs=2.0μs
而本方案中采用的 INA226,即使在最高速下,其单次采样转换时间为 140μs。
结论:
即便离谱的夸大了寄生电容,硬件信号稳定的速度 (2.0μs) 依然比 ADC (140μs) 快了 70 倍。
这说明,在此项目的架构下,寄生电容不构成瓶颈。我们在选型时不需要为了几十pF 的电容差异而牺牲成本或其他性能。
(3)耐压
INA226 的 VBUS 引脚原生支持最高 36V 的总线电压测量。为了充分榨干这一特性,我们将整个系统的标称耐压上限也定为了 36V。
然而,对于 P-MOSFET,虽然其漏源极击穿电压(VDSS)可达-40V,但其栅源极击穿电压(VGS)的极限只有 ±20V,如果在 36V 输入下直接将栅极拉低到地(0V)使其导通,其VGS 将承受高达 -36V 的压差,导致击穿烧毁。
所以我们在每一路 P-MOS 的栅源极(G-S)之间加入了 12V 稳压二极管 。无论输入电压多高,都能将 VGS 钳位在 -12V 的安全导通区间内。
但引入大量的稳压管和分压电阻显著增加了 BOM 种类和 PCB 布线复杂度。
事实上,在绝大多数低功耗嵌入式调试场景中,被测电压极少超过 20V(多为 3.3V / 5V / 12V 逻辑)。在下一代版本中,我将考虑把系统的标称工作电压下调至 20V 以内,从而移除稳压管钳位网络,进一步缩减体积与成本。
(4)漏电流
任何二极管的电流-电压(I-V)关系,都遵循肖克利二极管方程:I=IS×(enVTV−1)
-
I 是流过二极管的电流。
-
V 是二极管两端的电压(正向为正,反向为负)。
-
IS 是反向饱和漏电流。
当我们测量时:
-
测 10μA 电流,100Ω 电阻两端产生1mV的正向压降。
-
此时,并联在旁边的二极管承受的V=+0.001V。
-
由于V非常非常小,指数函数 (ex−1) 可以近似等效为一条直线。
-
此时的正向电流 I,是直接与 IS(反向漏电流)成正比的
如果一个二极管的 反向漏电(IS)极大(比如 500μA),那么它在1mV 的正向微压降下,同样会产生极大的正向微导通电流(可能高达几微安,直接把你的信号偷光)。
绝大多数的SS1045其 IS=0.1mA,但此设备选用的正芯,其规格书所写是IS=0.1uA,至于有没有虚标我也不清楚。
(5)导通内阻
本项目的最大理论量程设定为 8A,这基于大电流档(10mΩ)在 INA226 满量程81.92mV 下的物理上限(81.92mV/10mΩ≈8.19A)。
然而,能测到不等于能长期工作,由于回路上串联了防反接 P-MOS 与 量程旁路 P-MOS,即使 RDS(on)≈10mΩ。
在 8A 电流下,整个测量路径的总发热功率惊人:
-
采样电阻发热: Pshunt=I2R=82×0.01Ω=0.64W
-
双 MOS 管发热: Pmos=I2×(2×RDS(on))=64×0.02Ω=1.28W
-
路径总功耗: 0.64W+1.28W≈1.92W
近2 W 的热量如果不加装散热片或主动风冷,几十秒内核心区域温度就会突破 80∘C∼100∘C。高温更会导致采样电阻产生温漂,以及 MOS 管内阻随温度正向激增,进一步形成热失控恶性循环。
不仅于此,标称电流还直接影响了我们的续流二极管选型,因为极限情况下,我们要求在 μA 档位下也要能通过8 A 的电流,这就代表二极管绝不能是个小家伙,但众所周知,更大的封装又会造成更大的结电容,更大的漏电流,反而影响测量精度。
为此,续流二极管做了兼容焊盘,如果不需要大电流测量,可以使用更小封装的二极管,配合20 mΩ 甚至 50 mΩ 等采样电阻。
本设备的设计初衷为低功耗分析仪,或者叫微安表。
其高精度与价值体现在1μA∼500mA 的日常工作区间。对于 2 A 及以上的测量,在设计中仅作为瞬时测量存在。
评论区
登录后即可参与讨论
立即登录