小伙花10元,做了个测量工具!网友:这精度,是10元能做到的吗……

来源:立创开源硬件平台 测试测量 3 次阅读
摘要: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  功率接口

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 

功率接口

image.png

  • Type-C 接口:CC 默认直通,DP/DN 直通,可成功透传 PD/QC 及其各类私有协议。

  • 排母接口:兼容标准杜邦线连接,便于日常开发调试。

  • XT30 接口:专为5 A∼8 A 大电流设计的接口。由于双 MOS 损耗较大,建议持续工作电流不超过3 A;当 VBUS≤9 V时需进一步降额使用。(一般用不到,多档位方案不适合长期大电流)

03 

信号接口

image.png

  • SWD:单线调试引脚,用于WCH-Link烧录与调试。

  • TX:TTL 串口输出引脚,默认速率为1.5 M∼2 M,用于连接上位机。

  • GND:数字地,配合SWD/TTL使用,请勿将其作为功率地(PGND)使用。

04 

本地功能

11053.jpg

  • 基础页:同屏显示输出电压、电流、功率,右侧指示当前档位。

  • 曲线页:支持三档时基缩放,具备峰值/实时值/平均值统计。

  • 统计页:支持0.01mAh/0.01mWh电量/能量的积分累计。

05 

上位机

HbHODopwBGAWVYajFWkNy5PjkIaLrOTcx1iVrhT8.jpg

  • 适配VOFA+开源上位机,界面流畅,交互直观。

  • 提供基于PyQt5的上位机,支持开发区域测量、事件分析等多项高级功能,个人认为已达到可用级别。

  • 提供配有OCR的工具套件,涵盖校准电压、零点、电流三大基础标定项,以及信噪比、采样率测算等额外分析项。

    image.png

  • 信号部分电路大同小异,节省时间仅介绍一下各引脚分配情况。

  • 功率部分稍有创新,会重点介绍。

01 

信号

这部分主控采用CH32V003J4M6 (SOP8),在仅有的6 个I/O下实现了整体设计。

等效信号架构图:

image.png

  • PD1兼具SWD与按钮1功能;PD6兼具UART串口发送与按钮2功能。

  • PA2引脚用于监听INA226的ALERT中断信号,实现硬件过流升档。

  • PC4引脚驱动MOS网络,完成Ω与mΩ采样电阻的切换。

  • PC1/PC2硬件I2C引脚驱动OLED屏幕与INA226,未启用EEPROM。

02 

功率

系统支持最高36V的工作电压输入,配备了硬件级反接保护。

等效功率路径图:

image.png

(1) 防护电路

image.png

  • 过压防护:电源入口处配置了 TVS,用以吸收热插拔瞬间产生的尖峰高压浪涌。

  • 反接防护:采用 PMOS 构成的反接保护电路,提供相比二极管更低的发热与压降损耗。

  • 栅极限压:PMOS 栅极(G极)配有泄放稳压电路,确保在输入高电压(>

    20 V)时,其栅源电压 VGS 不会超过器件击穿阈值。上拉和泄放回路在采样前级取电,不会对测量精度产生干扰。

(2) 逻辑供电

image.png

  • 高耐压 LDO:采用支持最高 40 V 输入的 线性稳压器,封装选用散热面积更大的 SOT-223,保证在高压差工况下不过热。

  • 数字供电隔离:LDO 前端的隔离二极管D6,当功率链路发生电流抽载导致电压跌落时,该二极管能阻断 LDO 向外倒流,保障单片机不断电。

(3) 采样电阻切换

  • 输入电流首先到达INA226的

    IN+采样检测点。

  • 通过由单片机CTRL引脚控制的复合MOS切换网络进行双档位切换:

  • 防掉电续流保护:在μA 档位下工作时,若系统突发瞬态电流冲击,采样电阻上的压降将迅速扩大。一旦跌落电压超过并联二极管D2 的导通阈值,大电流将直接通过 D2 旁路流出。这能有效避免因采样分压过大导致后端负载意外掉电,同时保护电阻RHIGH不被超额功耗烧毁。

    image.png

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

    image.png

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

    image.png

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 Ω。

image.png

(1) 电压校准

电压校准是所有后续流程的基准,这是判断INA226真伪的最直观方案

电压线性曲线

经过实测,在3 V∼36 V 范围内,单点 LSB 的最大极差在1750 nV,若只关注3.3 V∼36 V,则最大极差在 750 nV。

经过 @御坂美琴我老婆 的提醒,3 V∼3.3 V 异常可能是由于 VCC 电压跌落导致,但我必须得说,nV 级别的测量远超我基准设备精度,我用绿色面积展示基准精度以便观察。

image.png

  • 如果没有高精度的基准设备(六位半),偏差不大可以直接填写1,250,000 nV。

  • 但我测试了多块 INA226,有个别地址是 0x44 的假片,其内部基准源偏差巨大,LSB 平均在1,182,000 nV,差值高达68,000 nV(误差近 5.4%5.4%),经过校准后也能用,但不建议。

1.1 电压校准流程

  • 将设备接入可调电源,使用万用表测量输出端电压,将实测值 OCR或手动录入。

    image.png

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

    image.png

(2) 电流零点校准

在实际测试中,在3V 依旧存在一个异常抖动,猜测同由 VCC 引起。此外还呈现出明显的单调递增,经过排查是由于 INA226 的 VBUS 引起,但结合利弊我依旧选择了当前方案,下面会详细说明。

2.1 uA档零点曲线

  1. VBUS引脚接入VMAIN:只能测量输入电压,将无法使用电阻校准电流,且输出容量计量不准确,但没有抽电影响。以下是实测图:

    image.png

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

    image.png

2.2 A档零点曲线

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

image.png

2.3 校准流程

针对不同输入电压下的不同零点,我设计了动态零点补偿算法。它通过记录关键拐点,随后再进行线性映射补偿,以下是具体校准方法。

  1. 启动 Python 脚本,确认串口号并填入上一步校准得到的 cal_v_lsb_nv,确保设备未接入任何负载后点击“开始录制数据”。

    image.png

  2. 缓慢调节可调电源,将电压从3 V 连续提升至 

    36 V。脚本会实时记录每个电压点对应的SRAW 原始底数。

  3. 按下设备左键切换电阻档位。等待 1 秒缓冲后将电压从36 V 再次缓慢调节回3 V。最后点击“停止录制并调参”。

  4. RDP 算法可将采样点压缩,直接生成标准的 C 语言结构体代码。需要注意的是,受限于 Flash 容量,最好确保两档位相加的拐点不超过 30 个,否则可能无法成功编译。

    image.png

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

    image.png

(3) 电阻阻值校准

虽然该设备检流网络较为复杂,但反而可以自由搭配电阻。因为我们会通过校准来倒推电阻的阻值,不依赖电阻精度,只需要尽可能关注温漂这一个参数。

在经过零点校准后,此时电流值的线性比预期要好,但在首尾还是有些许抖动,但这有可能是基准设备导致。

image.png

image.png

> 右侧(8A点位)异常升高推测由温漂引起,再次强调不建议大电流使用

3.1 测量策略

μA 档

  • 如果万用表能够测出0.1 μA 电流,可以直接选用电流档作为基准。

  • 如果不能,我们可以用已知阻值的负载,配合第一步就校准过的电压值,利用欧姆定律(I=V/R)倒推出真实电流。(VBUS 引脚必须接入 VOUT)

A 档位

  • 此档位下采样电阻功率较大,且负载阻值会随温度漂移。推荐直接使用万用表的电流档串联在回路中,以万用表的实时读数作为校准基准。

3.2 校准流程

  1. 可选在目录下编辑 resistors.txt,填入你准备好的电阻阻值或电流点( 如 100KR, 10R, 1.5A ),系统会自动按顺序执行。

  2. 如果没有检测到resistors.txt,运行校准脚本后可选择启用OCR或手动输入。

    image.png

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

    image.png

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

    image.png

(4) 精度测试与预测+采样率档位介绍(可选)

这部分的精度指INA226的噪声与信噪比,设备的整体精度会在更后面测试。

4.1 档位

在INA226中,有0~7共8档采样率,我分别测试了他们之间的关系,同时我也测试了很多人关注的TPA626。

292e30854f76465e87cbfb7824fad8dd.png

我们可以看出,随着档位的提高,无论是INA226还是TPA626的噪声都在迅速降低。但值得注意的是,626的噪声远大于226。

> TPA626对于IIC的要求更严格,多数项目可能并不兼容。

44176dbbeaea418c8e50b147f1eec40d.png

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

be729d405a7f42aeaeeb6f29e32a8988.png

此外,虽然从规格书中TPA626的转换时间在同档位比INA226更快,但实测下来,他们惊人的相似。

4.2 超采样

以下是我提供的第五个工具,从1.947的LSB能看出,这是工作在档位1的INA226,你可以使用此工具计算达到目标分辨率与信噪比所需的平均值次数,还能直观看出你的INA226是否正常,蓝色曲线为理论计算的最佳曲线,而红色是实测,如果红色越贴近蓝色,说明超采样有效。

image.png

这个数据实在太漂亮了,即使平均次数超过1024次依然有可观提升,这说明INA226中完全随机的白噪声几乎占据主导,我们可以根据这一特性来突破原本的分辨率限制。

在正常情况下,使用5.1 Ω 采样电阻,你能得到的最高分辨率就是490.20 nA,也就是 0.49 μA。

image.png

但依靠超采样,我们只需要进行1024次平均,就可以提供0.1μA的分辨率,同时SNR≥3,也就是几乎不会抖动。

所以这里会出现一个反常识的地方,对于INA226这种 ΔΣADC 来说,给予其更长的积分时间会比后期处理更有效,但我们进行超采样反而非常依赖噪声。如果你真的开高档位,输出无噪声无抖动的数据,反而会导致超采样失效,例如:

image.png

综合下来前两个档位性价比最高,上位机使用 CT0 档位,提供最高7.2 kHz 采样率,并可由上位机进行二次滤波处理。CT1 搭配 1024 次平均用作单机本地数据显示。

> 值得注意的是,平均处理必须依靠MCU后处理,这样才能取得超过16bit的分辨率

在固件中你可以配置使用的采样档位:

**

image.png

**

以及平均次数:

(5) 降档阈值计算器

至此,你已经完成了在校准固件中的测试项,可以刷入主固件,同时继续进行后续步骤。

由于固件并不限制采样电阻,所以触发降档的LSB截然不同,此计算器可以快速计算阈值,并允许按系数调整。

image.png

  • 如果系数 > 1,可能会导致硬件触发降档后又瞬间触发升档,这不会造成损坏,但会导致切档时期数据丢失。

  • 如果系数 < 1,更保险,但一般无需。

  • 在系数 = 1 时,日常使用足够,但我得说降档是依靠软件的,可能并不稳定(尤其是 100 Ω+10 mΩ 这种组合,降档可能粘滞)。

  • 下面为5.1 Ω+10 mΩ 的测试

(6) 有效采样率(可选)

由于唯一的 ALERT 引脚被用来升档使用,我们没有同步机制,但 INA226 内部的采样时间是存在偏移的。由规格书可知,CT0 的采样速度最大为154 μs。

image.png

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

我测试了从135μs∼150μs的数据:

image.png

可以发现,141 μs 为性价比最高的设置,如果超频,重复率会快速升高,且有效帧提升不大。如果降频,重复率下降不明显,且有效帧率也在快速下降。

数据重复的具体表现为曲线突然变平,但整体而言还算可以接受

image.png

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

image.png

02 

精度

我会按照三种难度来测试,测试视频会在最后一起放出。

  • 电压不变,负载与校准相同,此情况仅为测量理想情况下校准系统是否正常工作。

  • 电压不变,负载与校准不同,常见情况,此时电阻校准开始动态补偿,脱离最优情况。

  • 电压改变,根据欧姆定律,此时电流也跟跟随改变,此时需要同时进行动态零点补偿与动态电流补偿,此测试为理论最差情况。

由于负载有限,有些我只测了部分量程。

(1)μA 档位(难度 1)

实测精度:

±(0.56%+0.1 μA),全量程

image.png

(2)μA 档位(难度 2)

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

image.png

(3) μ**A**μA 档位(难度 3+)

实测精度:±0.50 μA,2.2 μA∼22 μA(负载限制)

image.png

(4) A**A 档位固定电压(难度 1)**

±(0.06%+0.50 mA),300 mA∼1.2 A(负载限制)

image.png

(5) A**A 档位调整电压(难度 3)**

±(0.09%+0.03 mA),300 mA∼1.35 A(负载限制)

image.png

其次就是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 是反向饱和漏电流。

当我们测量时:

  1. 测 10μA 电流,100Ω 电阻两端产生1mV的正向压降。

  2. 此时,并联在旁边的二极管承受的V=+0.001V。

  3. 由于V非常非常小,指数函数 (ex−1) 可以近似等效为一条直线。

  4. 此时的正向电流 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 及以上的测量,在设计中仅作为瞬时测量存在。

相关推荐
评论区

登录后即可参与讨论

立即登录