描述
<h1>一、项目功能介绍</h1>
<p>本项目的目标是以<strong>极低成本</strong>设计一款兼具<strong>宽电压、微安级测量、高采样率</strong>特性的<strong>低功耗分析仪</strong>。</p>
<p>注意,测试数据为本人设备个例,不做任何精度保证。</p>
<p>此项目虽然硬件成本相当低,但想完全发挥性能需要的时间精力不容小觑,如果有复刻意向请先完整阅读文档。</p>
<p>经过充分校准后,其实测性能可达:</p>
<ul>
<li>
<p><strong>小电流档相对精度$(5.1\ \Omega)\ $</strong>:$$\pm (0.55\% + 0.5\ \mu\text{A})$$</p>
</li>
<li>
<p><strong>大电流档相对精度$(10\ \text{m}\Omega)\ $</strong>:$$\pm (0.1\% + 0.5\text{ mA})$$</p>
</li>
<li>
<p><strong>测量分辨率</strong>:$0.1\ \mu\text{A}\ /\ 0.1\ \text{mA}\ /\ 1\ \text{mA}$。</p>
</li>
<li>
<p><strong>电流量程</strong>:$1\ \mu\text{A} \sim 8\ \text{A}\ (\text{Max})$。</p>
</li>
<li>
<p><strong>电压量程</strong>:$3.3\text{ V} \sim 36\text{ V}$。</p>
</li>
<li>
<p><strong>物理采样率</strong>:$\ge 7\text{ kHz}$。</p>
</li>
</ul>
<h2>功率接口</h2>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/3fbf699b41674c838145313a1700b850.png" alt="image.png"></p>
<ol>
<li>
<p><strong>Type-C 接口</strong>:CC 默认直通,DP/DN 直通,可成功透传 PD/QC 及其各类私有协议。</p>
</li>
<li>
<p><strong>排母接口</strong>:兼容标准杜邦线连接,便于日常开发调试。</p>
</li>
<li>
<p><strong>XT30 接口</strong>:专为 $5\text{ A} \sim 8\text{ A}$ 大电流设计的接口。由于双 MOS 损耗较大,建议持续工作电流不超过 $3\text{ A}$;当 $V_{\text{BUS}} ≤ 9\text{ V}$ 时需进一步降额使用。(一般用不到,多档位方案不适合长期大电流)</p>
</li>
</ol>
<h2>信号接口</h2>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/f91a321f2c504f9492a5470ef016d385.png" alt="image.png"></p>
<ol>
<li>
<p><strong>SWD</strong>:单线调试引脚,用于 WCH-Link 烧录与调试。</p>
</li>
<li>
<p><strong>TX</strong>:TTL 串口输出引脚,默认速率为 $1.5\text{ M} \sim 2\text{ M}$,用于连接上位机。</p>
</li>
<li>
<p><strong>GND</strong>:数字地,配合 SWD/TTL 使用,<strong>请勿将其作为功率地(PGND)使用</strong>。</p>
</li>
</ol>
<h2>本地功能</h2>
<p><img src="//image.lceda.cn/pullimage/DivxpbpZ4IegmKMkAiiJGLXwmdxQo0wL3e71i6ad.jpeg" alt="11053.jpg"></p>
<ol>
<li>
<p><strong>基础页</strong>:同屏显示输出电压、电流、功率,右侧指示当前档位。</p>
</li>
<li>
<p><strong>曲线页</strong>:支持三档时基缩放,具备峰值/ 实时值 / 平均值统计。</p>
</li>
<li>
<p><strong>统计页</strong>:支持 $0.01\text{ mAh}\ /\ 0.01\text{ mWh}$ 的电量与能量积分累计。</p>
</li>
</ol>
<h2>上位机</h2>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/59b58440e8c54ed4a05c5c8639052366.jpg" alt="HbHODopwBGAWVYajFWkNy5PjkIaLrOTcx1iVrhT8.jpg"></p>
<ol>
<li>
<p>适配 <strong>VOFA+ 开源上位机</strong>,界面流畅,交互直观。</p>
</li>
<li>
<p>提供基于 <strong>PyQt5 的上位机</strong>,针对实际需求开发<strong>区域测量、事件分析</strong>等多项高级功能,且进行了大量性能优化,个人认为已达到可用级别。</p>
</li>
<li>
<p>提供 <strong>配有 OCR 的工具套件</strong>,涵盖校准电压、零点、电流三大基础标定项,以及信噪比、采样率测算等额外分析项。
<img src="//image.lceda.cn/pullimage/rvqqbrLRYGfGVcQy7jkbRkc0nkKrPDrEAayp0u0f.png" alt="image.png"></p>
</li>
</ol>
<h1>二、项目属性</h1>
<p>本项目为原创设计,当前版本为首次公开。
未参与过任何比赛或学校答辩,未获得过相关奖项。</p>
<h1>三、开源协议</h1>
<p>本项目 <strong>100% 开源</strong>,采用 <strong>CC BY-SA 4.0</strong> 协议。</p>
<h2>开源范围包括</h2>
<ul>
<li>固件源代码(CH32V003 全部源码)</li>
<li>原理图与 PCB 设计文件</li>
<li>PyQt5 自制上位机完整源码</li>
<li>Python 自动校准脚本</li>
<li>外壳 3D 打印文件</li>
</ul>
<h2>协议要点</h2>
<ul>
<li>署名:衍生项目须注明原作者</li>
<li>相同方式共享:修改后的项目须以相同协议开源</li>
<li>商业使用:无限制</li>
</ul>
<h1>四、硬件部分</h1>
<p>此设备硬件可分为<strong>信号</strong>与<strong>功率</strong>两部分,信号部分电路大同小异,节省时间仅介绍一下各引脚分配情况。功率部分稍有创新,会重点介绍。</p>
<h2>1. 信号架构</h2>
<p>主控采用 <strong>CH32V003J4M6 (SOP8)</strong>,在仅有的 <strong>6 个 I/O</strong> 下实现了整体设计。</p>
<h3>等效信号架构图</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/b8c68127651242699c048ebb4fc18780.png" alt="image.png"></p>
<ul>
<li>
<p><strong>PD1</strong> 兼具 <strong>SWD</strong> 与 <strong>按钮 1</strong> 功能;<strong>PD6</strong> 兼具 <strong>UART 串口发送</strong> 与<strong>按钮 2</strong> 功能。</p>
</li>
<li>
<p><strong>PA2</strong> 引脚用于监听 INA226 的 <strong>ALERT</strong> 中断信号,实现<strong>硬件过流升档</strong>。</p>
</li>
<li>
<p><strong>PC4</strong> 引脚驱动 <strong>MOS网络</strong> ,完成 $\Omega$ 与 $\text{m}\Omega$ 采样电阻的切换。</p>
</li>
<li>
<p><strong>PC1 / PC2</strong> 硬件 I2C 引脚驱动 <strong>OLED 屏幕</strong> 与 <strong>INA226</strong> ,<strong>未启用 EEPROM</strong>。</p>
</li>
</ul>
<h2>2. 功率架构</h2>
<p>系统支持最高 <strong>$36\text{ V}$</strong> 的工作电压输入,配备了硬件级反接保护。</p>
<h3>等效功率路径图</h3>
<p><img src="//image.lceda.cn/pullimage/8DCugMzLsIuiMFIygustFKkc4xVWkJBJm83LylNd.png" alt="image.png"></p>
<h4>(1) 防护电路</h4>
<p><img src="//image.lceda.cn/pullimage/XG2OlZjwqhvKKSjKyQLPz0tALGZFYiYr14q9LGUL.png" alt="image.png"></p>
<ul>
<li>
<p><strong>过压防护</strong>:电源入口处配置了 TVS,用以吸收热插拔瞬间产生的尖峰高压浪涌。</p>
</li>
<li>
<p><strong>反接防护</strong>:采用 PMOS 构成的反接保护电路,提供相比二极管更低的发热与压降损耗。</p>
</li>
<li>
<p><strong>栅极限压</strong>:PMOS 栅极(G 极)配有泄放稳压电路,确保在输入高电压(>$ 20\text{ V}$)时,其栅源电压 $V_{\text{GS}}$ 不会超过器件击穿阈值。上拉和泄放回路在采样前级取电,不会对测量精度产生干扰。</p>
</li>
</ul>
<h4>(2) 逻辑供电</h4>
<p><img src="//image.lceda.cn/pullimage/PoHXnWXw0qgTGRikMGN1o2OyyEKCkSZY8TlMaK9K.png" alt="image.png"></p>
<ul>
<li>
<p><strong>高耐压 LDO</strong>:采用支持最高 $40\text{ V}$ 输入的 <strong>线性稳压器</strong>,封装选用散热面积更大的 <strong>SOT-223</strong>,保证在高压差工况下不过热。</p>
</li>
<li>
<p><strong>数字供电隔离</strong>:LDO 前端的隔离二极管 $D_6$,当功率链路发生电流抽载导致电压跌落时,该二极管能阻断 LDO 向外倒流,保障单片机不断电。</p>
</li>
</ul>
<h4>(3) 采样电阻切换</h4>
<ul>
<li>
<p>输入电流首先到达 INA226 的 <strong>$\text{IN}^+$</strong> 采样检测点。</p>
</li>
<li>
<p>通过由单片机 <strong>CTRL</strong> 引脚控制的<strong>复合 MOS 切换网络</strong>进行双档位切换:</p>
<ul>
<li>
<p><strong>$\text{A}$ 档(大电流档)</strong>:电流流经 $R_{\text{LOW}}$ 采样电阻和 $Q<em>2$ 功率开关后输出至 $\text{V}</em>{\text{OUT}}$。此时,模拟开关 $S_2$ 截止,$S_1$ 导通,$\text{SEN}_1$ 检测点作为实际的采样负端 $\text{IN}^-$。工作状态原理图如下,其中<strong>蓝色</strong>代表<strong>采样检测线</strong>,<strong>绿色</strong>代表<strong>主电流通路</strong>。
<img src="//image.lceda.cn/pullimage/NkXtSZi47lmy9j2Yhwdi2nybUFbiGsHTSO1uxSHh.png" alt="image.png"></p>
</li>
<li>
<p><strong>$\mu\text{A}$ 档(小电流档)</strong>:$Q<em>2$ 开关截止,电流流经由 $R</em>{\text{LOW}} + R<em>{\text{HIGH}}$ 组成的 $\Omega$ 级精密采样电阻输出至 $\text{V}</em>{\text{OUT}}$。此时,模拟开关 $S_2$ 导通,$S<em>1$ 截止。采样点即为$\text{V}</em>{\text{OUT}}$。工作状态原理图如下,其中<strong>蓝色</strong>代表<strong>采样检测线</strong>,<strong>绿色</strong>代表<strong>主电流通路</strong>。 <img src="//image.lceda.cn/pullimage/Y1RjSOthWUOsrldGSghUzErSamDCyyBDi7BSL25k.png" alt="image.png"> </p>
</li>
<li>
<p><strong>防掉电续流保护</strong>:在 $\mu\text{A}$ 档位下工作时,若系统突发瞬态电流冲击,采样电阻上的压降将迅速扩大。一旦跌落电压超过并联二极管 $D_2$ 的导通阈值,大电流将直接通过 $D<em>2$ 旁路流出。这能有效避免因采样分压过大导致后端负载意外掉电,同时保护电阻 $R</em>{\text{HIGH}}$ 不被超额功耗烧毁。 <img src="//image.lceda.cn/pullimage/AWJfGeDrhQCJaAKW6QTNnVd2KEpEo9jFXUv1JZ1g.png" alt="image.png"></p>
</li>
</ul>
<p>由于硬件部分讨论较多,故在此开一个Q&A记录</p>
<ul>
<li>Q1:信号切换MOS管(S2)开启的话,S极需要一定的高电平,怎么来的?</li>
<li>
<h2>A1:可对照前文图片理解,此情况即为uA档位状态,此时S2的D即为VOUT(>3V),由于寄生二极管的存在,S此时约为2.2V,此时VGS为-2.2,PMOS开始导通,当导通后S=D=VOUT。此为PMOS经典用法,例如理想二极管。</h2>
</li>
<li>Q2:TVS用错了(U8)?被立创商城的误导了?实物丝印“MP”是UNI,单向的,商城商品参数极性是双向。</li>
<li>
<h2>A2:确实用错了,我筛选了双向后直接摆了一个,没有核对符号与丝印,非常抱歉。此处需要使用双向TVS,因为单向TVS在反接时会直接导通导致短路,若下载了旧版资料的请注意更新。</h2>
</li>
</ul>
</li>
</ul>
<h1>五、软件部分</h1>
<h2>1.本地功能演示</h2>
<h3>(1)标准视图</h3>
<ul>
<li>同屏显示<strong>电压、电流、功率</strong>。 </li>
<li>长按<strong>左键去皮</strong>,左侧进度条动态显示进度。 </li>
<li><strong>右侧</strong>滑块实时反馈当前硬件处于 <strong>$\mu\text{A}$</strong> 还是 <strong>$\text{A}$</strong> 档位,长按可强制切换档位。 </li>
<li><strong>双键按下</strong>切换至<strong>上位机模式</strong>,屏幕进入静默状态以节省 I2C 带宽。</li>
</ul>
<p><img src="//image.lceda.cn/pullimage/4EtALGhaHooCt55JTewZy5tcXmhyHVJJ1zPV8FS4.gif" alt="11.gif">
> 这里有个小彩蛋,正常无法超量程降档,除非如动画中去皮后强制降档,可见此时电压跌落了 $0.3\ \text{V}$,即为续流二极管的 $V_{\text{f}}$。</p>
<h3>(2)实时曲线</h3>
<ul>
<li>实时显示 <strong>PEAK (峰值)</strong>、<strong>NOW (实时)</strong>、<strong>AVG (均值)</strong>。 </li>
<li>长按<strong>左键清除</strong>统计与曲线缓冲区。</li>
<li>长按<strong>右键调节速度</strong>档位,支持三档时间轴缩放。 </li>
<li>双键按下切换显示 <strong>A (电流)</strong>、<strong>W (功率)</strong>、<strong>V (电压)</strong>。 </li>
</ul>
<p><img src="//image.lceda.cn/pullimage/KhyqA0KassYzbJuuljNm4YdMF7e8ThtrMq4Loorl.gif" alt="22.gif"></p>
<h3>(3)容量统计</h3>
<ul>
<li>支持 <strong>0.01mAh / 0.01mWh</strong> 分辨率的电量与能量累计。 </li>
<li><strong>长按右键暂停/开启</strong>统计任务,右侧 RUN/STOP 拨杆指示。</li>
<li><strong>长按左键清零</strong>,左侧进度条动态显示进度。 </li>
</ul>
<p><img src="//image.lceda.cn/pullimage/0qos2julbY6k6qXiVGJRdWoVwlfwCCPPW68tZxis.gif" alt="33.gif"></p>
<h2>2.上位机功能演示</h2>
<p>对于低功耗分析仪来说,可以没有屏幕,但不能没有上位机。</p>
<ul>
<li>通过 <strong>UART DMA</strong> 链路,将机内处理过的<strong>净值</strong>输出。</li>
<li>可达 $7.2\text{ kHz}$ 采样率,面对<strong>射频</strong>电流曲线可<strong>清晰分辨</strong>。
<h3>(1)VOFA+</h3></li>
</ul>
<p><img src="//image.lceda.cn/pullimage/QOYZnCUu2SwJiEuKl9yERpIqXLTHSDMmNm1qilNU.gif" alt="video_20260429_.gif"></p>
<p>这是一个开源上位机,优势在于界面美观,效率极高,操作便捷。但缺点是仅有基础的观测功能,没有我们需要的平均电流等计量功能。</p>
<p>> 动画为设备开发早期录制,负载为AP固件的ESP8266。</p>
<hr>
<h3>(2)PyQt5</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/5fea2f916cf5423c9f1e2c08a550102a.gif" alt="上位机.gif">
动画较长,几乎演示了所有功能,但不建议看,我会在附件中提供视频。</p>
<hr>
<h2>3.校准</h2>
<ul>
<li>
<p>所提及的精度为<strong>相对精度</strong>,即相较于基准设备的偏差,至于基准设备自己会不会偏差那我觉得答案应该是会的。</p>
</li>
<li>
<p>校准流程需严格按照此文档顺序,校准脚本1~4需要刷入<strong>校准专用固件</strong>,他们的特点是串口速率设置为 $2\ \text{M}$。</p>
</li>
<li>
<p>校准脚本5、6以及上位机需要在<strong>正式固件</strong>中运行,他们的串口被设定为 $1.5\ \text{M}$。</p>
</li>
<li>
<p>所有脚本都可针对自身情况修改,设备若支持通讯可实现深度自动化校准。</p>
</li>
</ul>
<h3>需求工具</h3>
<ul>
<li>可调电源(能输出就行)</li>
<li>T21L及以上万用表(电压、电流、电阻)</li>
<li>WCH-LINKE(烧录、串口)</li>
<li>负载($\mu\text{A}$ 档可用贴片电阻,$\text{A}$ 档水泥电阻,或电子负载)</li>
<li>摄像头(可选,用于OCR识别读数)</li>
</ul>
<hr>
<h3>(0) 采样电阻计算器(可选)</h3>
<p>可快速计算采样电阻阻值对应的最大量程与分辨率。用户可根据需要选择采样电阻阻值。</p>
<ul>
<li>
<p>$R_{\text{LOW}}$ 推荐 $10 \sim 20\ \text{m}\Omega$</p>
</li>
<li>
<p>$R_{\text{HIGH}}$ 推荐 $5.1 \sim 100\ \Omega$。</p>
</li>
</ul>
<p><img src="//image.lceda.cn/pullimage/QF48t2TmV1qewEP2MIqOTTnV0Dl64SboLAsDIyCb.png" alt="image.png"></p>
<hr>
<h3>(1) 电压校准</h3>
<p>电压校准是所有后续流程的基准,这是<strong>判断INA226真伪的最直观方案</strong>。</p>
<h4>电压线性曲线</h4>
<p>经过实测,在 $3\ \text{V} \sim 36\ \text{V}$ 范围内,单点 LSB 的最大极差在 $1750\text{ nV}$,若只关注 $3.3\ \text{V} \sim 36\ \text{V}$,则最大极差在 $750\text{ nV}$。经过 <code>@御坂美琴我老婆</code> 的提醒,$3\ \text{V} \sim 3.3\ \text{V}$ 异常可能是由于 <code>VCC</code> 电压跌落导致,但我必须得说,nV 级别的测量远超我基准设备精度,我用绿色面积展示基准精度以便观察。</p>
<p><img src="//image.lceda.cn/pullimage/KZITBGppvs94ci5OyRRqahcD9el3tabaha2rfOsx.png" alt="image.png"></p>
<ul>
<li>如果没有高精度的基准设备(六位半),偏差不大可以直接填写 $1,250,000\text{ nV}$。</li>
<li>但我测试了多块 INA226,有个别地址是 <strong>0x44</strong> 的假片,其内部基准源偏差巨大,LSB 平均在 <strong>$1,182,000\text{ nV}$</strong>,差值高达 <strong>$68,000\text{ nV}$</strong>(误差近 <strong>$5.4\%$</strong>),经过校准后也能用,但不建议。</li>
</ul>
<h4>电压校准流程</h4>
<ul>
<li>
<p>将设备接入可调电源,使用万用表测量输出端电压,将实测值 OCR或手动录入。<img src="//image.lceda.cn/pullimage/g1794ETWuuDI0xwI1iz8WFzRZLeQkYVNokLLBB9C.png" alt="image.png"></p>
</li>
<li>
<h2>电压一般仅需快速测量3-5个点即可,输入Y后会显示所有测量的点位统计。
<img src="//image.lceda.cn/pullimage/EqMOkIjKRwJNCSQPyKNc9drJgx3R472d4wDoxQ3r.png" alt="image.png"></h2>
</li>
</ul>
<h3>(2) 电流零点校准</h3>
<p>在实际测试中,在 $3\ \text{V}$ 依旧存在一个异常抖动,猜测同由 <code>VCC</code> 引起。此外还呈现出明显的单调递增,经过排查是由于 INA226 的 <code>VBUS</code> 引起,但结合利弊我依旧选择了当前方案,下面会详细说明。</p>
<h4>uA档零点曲线</h4>
<ol>
<li>
<p><strong><code>VBUS</code> 引脚接入 <code>VMAIN</code></strong>:只能测量输入电压,将无法使用电阻校准电流,且输出容量计量不准确,但没有抽电影响。以下是实测图:
<img src="//image.lceda.cn/pullimage/CzpVg0dm32uMXmCc1OBO4jUTH8wMDSwPXSRmYFya.png" alt="image.png"></p>
</li>
<li>
<p><strong><code>VBUS</code> 引脚接入 <code>VOUT</code></strong>:可测量精确输出电压,计量准确,虽然会抽取电流,但只是一个典型值为 $850\ \text{k}\Omega$ 的<strong>固定负载</strong>,由图可见<strong>明显的线性关系</strong>,可通过<strong>校准补偿</strong>,以下是实测图:<img src="//image.lceda.cn/pullimage/b48KMiwjUTcTtCtusraIDfZxNEGA1StIjdM71hKi.png" alt="image.png"></p>
</li>
</ol>
<h4>$\text{A}$ 档零点曲线</h4>
<p>对于 $\text{A}$ 档位来说,<code>VBUS</code> 抽走的电流不值一提,整体曲线与接入 <code>VMAIN</code> 引脚的 $\mu\text{A}$ 档趋势相似,总体都呈现为高点迅速跌落后再缓慢升高,其成因推测与 INA226 的 ${\text{CMRR}}$ 与 $I_{\text{b}}$ 等有关,经过校准影响不大,故暂不深究。
<img src="//image.lceda.cn/pullimage/pjWRobWrimS3c0aahoACGEK4Lyx2TnTCkIGIjaZT.png" alt="image.png"></p>
<h4>校准流程</h4>
<p>针对不同输入电压下的不同零点,我设计了<strong>动态零点补偿算法</strong>。它通过记录关键拐点,随后再进行线性映射补偿,以下是具体校准方法。</p>
<ol>
<li>
<p>启动 Python 脚本,确认串口号并填入上一步校准得到的 <code>cal_v_lsb_nv</code>,确保设备<strong>未接入任何负载</strong>后点击“开始录制数据”。
<img src="//image.lceda.cn/pullimage/vTwjz7KWCyAe8Zj0Z3j4B0uZeIkw9KBSXb9Dv9iO.png" alt="image.png"></p>
</li>
<li>
<p>缓慢调节可调电源,将电压从 $3\ \text{V}$ 连续提升至 $36\ \text{V}$。脚本会实时记录每个电压点对应的 $S_{\text{RAW}}$ 原始底数。</p>
</li>
<li>
<p>按下设备<strong>左键</strong>切换电阻档位。等待 1 秒缓冲后将电压从 $36\ \text{V}$ 再次缓慢调节回 $3\ \text{V}$。最后点击“停止录制并调参”。</p>
</li>
<li>
<p>RDP 算法可将采样点压缩,直接生成标准的 C 语言结构体代码。需要注意的是,受限于 Flash 容量,最好确保两档位相加的拐点<strong>不超过 30 个</strong>,否则可能无法成功编译。<img src="//image.lceda.cn/pullimage/uqE6Bbc5i1Boky1vASbXmxldmKzWSCTwrzDpm1TX.png" alt="image.png"></p>
</li>
<li>
<p><strong>固件更新</strong>:将生成的 <code>table_10mr</code> 和 <code>table_100r</code> 数组复制并替换到 <code>power_app.c</code> 中。
<img src="//image.lceda.cn/pullimage/DyIwg9Kng7udlIswkdWFXb1Jv1uxNzTqlTSGOKnA.png" alt="image.png"></p>
</li>
</ol>
<hr>
<h3>(3) 电阻阻值校准</h3>
<p>虽然该设备检流网络较为复杂,但反而可以<strong>自由搭配电阻</strong>。因为我们会通过校准来<strong>倒推</strong>电阻的阻值,<strong>不依赖电阻精度</strong>,只需要尽可能关注<strong>温漂</strong>这一个参数。</p>
<p>在经过零点校准后,此时电流值的线性比预期要好,但在首尾还是有些许抖动,但这有可能是基准设备导致。</p>
<p><img src="//image.lceda.cn/pullimage/Oa3qRXzrZSluR5rwvU1NscFcVpX4h7iD7sDnwFQf.png" alt="image.png"></p>
<p><img src="//image.lceda.cn/pullimage/ziiZuVYIiXEl7G3oC35jkSvLlWZrIvPiyu5nIIq8.png" alt="image.png"></p>
<p>> 右侧(8A点位)异常升高推测由温漂引起,再次强调不建议大电流使用</p>
<h4>测量策略</h4>
<ul>
<li>
<p><strong>$\mu\text{A}$ 档</strong></p>
<ul>
<li>如果万用表能够测出 $0.1\ \mu\text{A}$ 电流,可以直接选用电流档作为基准。</li>
<li>如果不能,我们可以用已知阻值的负载,配合第一步就校准过的电压值,利用欧姆定律($I = V/R$)倒推出真实电流。(VBUS 引脚必须接入 VOUT)</li>
</ul>
</li>
<li>
<p><strong>$\text{A}$ 档位</strong></p>
<ul>
<li>此档位下采样电阻功率较大,且负载阻值会随温度漂移。推荐直接使用万用表的电流档串联在回路中,以万用表的实时读数作为校准基准。</li>
</ul>
</li>
</ul>
<h4>校准流程</h4>
<ol>
<li>
<p><strong>可选</strong>在目录下编辑 <code>resistors.txt</code>,填入你准备好的电阻阻值或电流点( 如 <code>100KR</code>, <code>10R</code>, <code>1.5A</code> ),系统会自动按顺序执行。</p>
</li>
<li>
<p>如果没有检测到resistors.txt,运行校准脚本后可选择启用OCR或手动输入。<img src="//image.lceda.cn/pullimage/pCeHa6bXozJx2Pl0VrxQNicezvuCX4Aaa5RfJCsS.png" alt="image.png"></p>
</li>
<li>
<p>你可以随时输入 <code>Y</code> 结束取样并进入计算阶段,在计算阶段中填入之前测试的已知变量(来自校准1、2)。<img src="//image.lceda.cn/pullimage/MBhyVr5yqRRUwRDB4I1drsI5l714XtjN4iPBRvlu.png" alt="image.png"></p>
</li>
<li>
<h2>调整压缩等级,将生成的 <code>GainPoint_t</code> 结构体代码复制回工程文件中。(受FLASH限制校准点相加最好不超过20个)
<img src="//image.lceda.cn/pullimage/q024A7CqM6hDKUnYZOaNHig7agNNSfFg0VMzeFEm.png" alt="image.png"></h2>
<h3>(4) 精度测试与预测+采样率档位介绍(可选)</h3>
<p>这部分的精度指INA226的噪声与信噪比,设备的整体精度会在更后面测试。</p>
</li>
</ol>
<h4>档位</h4>
<p>在INA226中,有0~7共8档采样率,我分别测试了他们之间的关系,同时我也测试了很多人关注的TPA626。</p>
<p><img src="//image.lceda.cn/pullimage/Rl3UEDVDAm8RNU0E1ZzCjsiAmjFNxCJX6K1GQU9D.webp" alt="292e30854f76465e87cbfb7824fad8dd.png">
我们可以看出,随着档位的提高,无论是INA226还是TPA626的噪声都在迅速降低。但值得注意的是,<strong>626的噪声远大于226</strong>。</p>
<p>> TPA626对于IIC的要求更严格,多数项目可能并不兼容。</p>
<hr>
<p><img src="//image.lceda.cn/pullimage/7IieRBj1CfUHOOZi16PeN5X74K9b4vwAaBiwfz9Z.webp" alt="44176dbbeaea418c8e50b147f1eec40d.png"></p>
<p>可以看出,TPA626提升档位时带来信噪比的提升有限,这说明TPA626的噪声大概率并非白噪声主导。</p>
<hr>
<p><img src="//image.lceda.cn/pullimage/W9bnbrRnVAC3m5PrwuXCWFWqhKMyzr44MslSYkEa.webp" alt="be729d405a7f42aeaeeb6f29e32a8988.png">
此外,虽然从规格书中TPA626的转换时间在同档位比INA226更快,但实测下来,他们惊人的相似。</p>
<hr>
<h4>超采样</h4>
<p>以下是我提供的第五个工具,从1.947的LSB能看出,这是工作在档位1的INA226,你可以使用此工具计算达到目标分辨率与信噪比所需的平均值次数,还能直观看出你的INA226是否正常,蓝色曲线为理论计算的最佳曲线,而红色是实测,如果红色越贴近蓝色,说明超采样有效。</p>
<p><img src="//image.lceda.cn/pullimage/sEd4XN89ZwwX1freRGGytpaytSeBf1J2oH3EgEyv.png" alt="image.png">
这个数据实在太漂亮了,即使平均次数超过1024次依然有可观提升,这说明INA226中完全随机的白噪声几乎占据主导,我们可以根据这一特性来突破原本的分辨率限制。</p>
<p>在正常情况下,使用 $5.1\ \Omega$ 采样电阻,你能得到的最高分辨率就是 $490.20\text{ nA}$,也就是 $0.49\ \mu\text{A}$。<img src="//image.lceda.cn/pullimage/6OCRicdpISKBMpVmcpqUWq2ROFaZywB8ohcGl8aT.png" alt="image.png"></p>
<p>但依靠超采样,我们只需要进行 1024 次平均,就可以提供 $0.1\ \mu\text{A}$ 的分辨率,同时 $\text{SNR} \ge 3$,也就是几乎不会抖动。</p>
<p>所以这里会出现一个反常识的地方,对于 INA226 这种 $\Delta\Sigma ADC$ 来说,给予其更长的积分时间会比后期处理更有效,但我们进行超采样反而非常依赖噪声。如果你真的开高档位,输出无噪声无抖动的数据,反而会导致超采样失效,例如:
<img src="https://image.lceda.cn/oshwhub/pullImage/51d399fa137b4cdcaf737d0482ab47ca.png" alt="image.png">
综合下来前两个档位性价比最高,上位机使用 <code>CT0</code> 档位,提供最高 $7.2\text{ kHz}$ 采样率,并可由上位机进行二次滤波处理。<code>CT1</code> 搭配 <strong>1024 次平均</strong>用作单机本地数据显示。
> 值得注意的是,平均处理必须依靠MCU后处理,这样才能取得超过16bit的分辨率</p>
<p>在固件中你可以配置使用的采样档位:
<img src="//image.lceda.cn/pullimage/6e69cV4VOunWOQY0ATsKyvepxpO66RVxKFdF0umd.png" alt="image.png">
以及平均次数:
<img src="//image.lceda.cn/pullimage/ttzPL7JjvfxWHV5L7UnDYVH8boAN7tpRK14Lywkp.png" alt="image.png"></p>
<hr>
<h3>(5) 降档阈值计算器</h3>
<p>至此,你已经完成了在校准固件中的测试项,可以刷入主固件,同时继续进行后续步骤。</p>
<p>由于固件并不限制采样电阻,所以触发降档的LSB截然不同,此计算器可以快速计算阈值,并允许按系数调整。</p>
<p><img src="//image.lceda.cn/pullimage/RB9jHSUccyJGZVddc3dGSeM8CqolizUubHAUoyx9.png" alt="image.png"></p>
<ul>
<li>
<p>如果系数 > 1,可能会导致硬件触发降档后又瞬间触发升档,这不会造成损坏,但会导致切档时期数据丢失。</p>
</li>
<li>
<p>如果系数 < 1,更保险,但一般无需。</p>
</li>
<li>
<p>在系数 = 1 时,日常使用足够,但我得说降档是依靠软件的,可能并不稳定(尤其是 $100\ \Omega + 10\ \text{m}\Omega$ 这种组合,降档可能粘滞)。</p>
</li>
<li>
<h2>下面为 $5.1\ \Omega + 10\ \text{m}\Omega$ 的测试:<img src="//image.lceda.cn/pullimage/jR9rs4lRxK1VctLolKGVntIRK8MVwtNdrxzBzht6.gif" alt="切档.gif"></h2>
<h3>(6) 有效采样率(可选)</h3>
<p>由于唯一的 <code>ALERT</code> 引脚被用来升档使用,我们没有同步机制,但 INA226 内部的采样时间是存在偏移的。由规格书可知,<code>CT0</code> 的采样速度最大为 $154\ \mu\text{s}$。</p>
</li>
</ul>
<p><img src="//image.lceda.cn/pullimage/4xuiioVcbpp8x57A5bP1naB84gBIit1ACBnIUx1l.png" alt="image.png">
如果我们以固定的 $140\ \mu\text{s}$ 时间提取数据,将不可避免有大约 $1\%$ 的数据点同步失败,此时的真实有效帧率大约降低到 $7.06\text{ kHz}$。但值得注意的是,受到芯片体制影响,有的重复率会更低。</p>
<p>我测试了从 $135\ \mu\text{s} \sim 150\ \mu\text{s}$ 的数据:</p>
<p><img src="//image.lceda.cn/pullimage/EC6ts9MEQD6qwZ7raEbMbdMbpiQjB6ox40Nb29xt.png" alt="image.png"></p>
<p>可以发现,$141\ \mu\text{s}$ 为性价比最高的设置,如果超频,重复率会快速升高,且有效帧提升不大。如果降频,重复率下降不明显,且有效帧率也在快速下降。</p>
<p>数据重复的具体表现为曲线突然变平,但整体而言还算可以接受</p>
<p><img src="//image.lceda.cn/pullimage/KLXo1JMGARKEfyat2nPpkWdJKE1l61HcFDxBtNMM.png" alt="image.png"></p>
<p>这个间隔在固件中同样可以快速配置,并根据使用档位自动选择分支。
<img src="//image.lceda.cn/pullimage/EwcrlyBVpAD6mlOwKnOEZ9H4Y0bDR9QLEFvEWFqV.png" alt="image.png"></p>
<h2>4.精度</h2>
<p>我会按照<strong>三种难度</strong>来测试,测试视频会在最后一起放出。</p>
<ol>
<li>
<p>电压不变,负载与校准相同,此情况仅为测量理想情况下校准系统是否正常工作。</p>
</li>
<li>
<p>电压不变,负载与校准不同,常见情况,此时电阻校准开始动态补偿,脱离最优情况。</p>
</li>
<li>
<p>电压改变,根据欧姆定律,此时电流也跟跟随改变,此时需要同时进行动态零点补偿与动态电流补偿,此测试为理论最差情况。</p>
</li>
</ol>
<p><strong>由于负载有限,有些我只测了部分量程。</strong> </p>
<h3>(1) $\mu\text{A}$ 档位(难度 1)</h3>
<p>实测精度:$\pm (0.56\% + 0.1\ \mu\text{A})$,全量程</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/3d346f8daa1d49f18902ab32651ea95e.png" alt="image.png"></p>
<h3>(2) $\mu\text{A}$ 档位(难度 2)</h3>
<p>实测精度: $\pm (0.27\% + 0.4\ \mu\text{A})$,$453\ \mu\text{A} \sim 15\text{ mA}$ 范围(负载限制)</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/28d1e38f7ad14fa1837e05f3edf4800c.png" alt="image.png"></p>
<h3>(3) $\mu\text{A}$ 档位(难度 3+)</h3>
<p>实测精度: $\pm 0.50\ \mu\text{A}$,$2.2\ \mu\text{A} \sim 22\ \mu\text{A}$(负载限制)</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/503be76324384a1db6d919a900d1f21b.png" alt="image.png"></p>
<p>> </p>
<h3>(4) $\text{A}$ 档位固定电压(难度 1)</h3>
<p>$\pm (0.06\% + 0.50\text{ mA})$,$300\text{ mA} \sim 1.2\text{ A}$(负载限制)</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/9618f548e88e4f1cbfa19cb84f0fa429.png" alt="image.png"></p>
<h3>(5) $\text{A}$ 档位调整电压(难度 3)</h3>
<p>$\pm (0.09\% + 0.03\text{ mA})$,$300\text{ mA} \sim 1.35\text{ A}$(负载限制)</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/80cebbb6174e4af697ed787b6f612fd6.png" alt="image.png"></p>
<h1>六、BOM选型参考</h1>
<p>我承认标题的十元有点擦边,因为实际按照我的购买价格还不到十元,大部分元件都使用了样品券常驻厂商(JLC的恩情还不完)。</p>
<h2>主要元件</h2>
<p>最贵的元件是<strong>屏幕</strong>,实话说我几乎用不到它,后续可以改下代码做一个无屏版,专注于上位机模式。</p>
<h2><img src="https://image.lceda.cn/oshwhub/pullImage/ff49c28e65534e1fbc3435ed5baa21a3.png" alt="image.png"></h2>
<p>其次就是<strong>INA226</strong>,价格浮动较剧烈,假货很多,建议会员日用11-10买,或者找绝对可靠的店铺用-2券。</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/0bce5ae99aed4b99875826bfe0aac002.png" alt="image.png"></p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/1dd914b5fbaf4dbcbac95b6f5ea14bec.png" alt="image.png"></p>
<hr>
<p><strong>MCU</strong>不用多说(翠花的恩情也还不完),实价0.6包邮。</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/39a9cf67d8aa43f2bf7d9115510bed55.png" alt="image.png"></p>
<hr>
<h2>次要元件</h2>
<p>这部分主要是一些MOS管,还有二极管等基础元件,我会介绍几个关键的选型参数,其中大部分内容是我在<code>YQ-PCS低功耗分析仪</code>中学到的,如有兴趣可转跳详细学习。</p>
<p>这部分的元件成本稍微看了一下,比较贵的比如功率PMOS单价0.06,LDO单价0.13,其余的小MOS等都是用厘来计算了。</p>
<hr>
<h3>寄生电容</h3>
<p>在多档位电流表中,当进行档位切换或负载电流发生突变时,电流会优先对测量回路中的<strong>寄生电容</strong>进行充放电。只有当电容两端的电压稳定后,真实反映电流大小的电压信号才会呈现在采样电阻两端。因此,如果并联在采样路径上的寄生电容过大,将会直接拖慢电路的动态响应速度,导致高频测量失真。</p>
<p>在项目初期,我并未进行严密的容值计算,本着求稳的心态直接选取了较低寄生电容的器件。我提取了各元件在极限状态(如 $V_{DS} \approx 0\text{V}$)下的标称参数:</p>
<ul>
<li><strong>信号 N-MOS</strong> ($V<em>{DS} \approx 0\text{V}$ 时):$C</em>{rss} \approx 16\text{ pF}$, $C<em>{oss} \approx 26\text{ pF}$, $C</em>{iss} \approx 40\text{ pF}$</li>
<li><strong>信号 P-MOS</strong> ($-V<em>{DS} \approx 0\text{V}$ 时):$C</em>{rss} \approx 5\text{ pF}$, $C<em>{oss} \approx 13\text{ pF}$, $C</em>{iss} \approx 22\text{ pF}$</li>
<li><strong>续流肖特基二极管</strong> ($V_R \approx 0\text{V}$ 时):$C_j \approx 1050\text{ pF}$</li>
<li><strong>功率 P-MOS</strong> ($V<em>{DS} = -20\text{V}, V</em>{GS} = 0\text{V}, f = 1\text{MHz}$):$C<em>{rss} \approx 215.3\text{ pF}$, $C</em>{oss} \approx 270.9\text{ pF}$, $C_{iss} \approx 2000\text{ pF}$</li>
</ul>
<h4>暴力计算</h4>
<p>在我们的电路拓扑中, 一般 $R_{high}$ ≤ $100\Omega$ 。
我们采用<strong>最坏的情况估算</strong>,完全无视电路的物理结构隔离,强行将上述所有器件的所有种类电容(不管是输入、输出还是反向电容)全部相加:</p>
<p>$$C<em>{total_abs} \approx \sum (C</em>{iss} + C<em>{oss} + C</em>{rss} + C_j) \approx 4000\text{ pF} = 4\text{ nF}$$</p>
<p>我们将这个高达 $4\text{ nF}$ 的夸张电容值,带入最大采样电阻 $100\Omega$ 中,计算一阶 RC 电路的时间常数 $\tau$:
$$\tau = R \times C_{total_abs} = 100\Omega \times 4 \times 10^{-9}\text{F} = 400\text{ ns} = 0.4\mu\text{s}$$</p>
<p>在工程上,信号达到 $99.3\%$ 的稳定状态需要经过 $5\tau$ 的时间。因此,在这个“不可能存在的极限恶劣电路”中,电压建立时间为:
$$t_{settle} = 5\tau = 5 \times 0.4\mu\text{s} = \mathbf{2.0\mu s}$$</p>
<p>而本方案中采用的 INA226,即使在最高速下,其单次采样转换时间为 <strong>$140\mu\text{s}$</strong>。</p>
<p><strong>结论:</strong>
即便离谱的夸大了寄生电容,硬件信号稳定的速度 ($2.0\mu\text{s}$) 依然比 ADC ($140\mu\text{s}$) 快了 <strong>70 倍</strong>。</p>
<p>这说明,在此项目的架构下,寄生电容<strong>不构成瓶颈</strong>。我们在选型时不需要为了几十 $pF$ 的电容差异而<strong>牺牲成本</strong>或其他性能。</p>
<hr>
<h3>耐压</h3>
<p>INA226 的 VBUS 引脚原生支持最高 <strong>36V</strong> 的总线电压测量。为了充分榨干这一特性,我们将整个系统的标称耐压上限也定为了 36V。</p>
<p>然而,对于 P-MOSFET,虽然其漏源极击穿电压($V<em>{DSS}$)可达 -40V,但其**栅源极击穿电压($V</em>{GS}$)的极限只有 $\pm 20\text{V}$**,如果在 36V 输入下直接将栅极拉低到地(0V)使其导通,其 $V_{GS}$ 将承受高达 -36V 的压差,导致击穿烧毁。</p>
<p>所以我们在每一路 P-MOS 的栅源极(G-S)之间加入了 <strong>12V 稳压二极管</strong> 。无论输入电压多高,都能将 $V_{GS}$ 钳位在 -12V 的安全导通区间内。</p>
<p>但引入大量的稳压管和分压电阻显著增加了 BOM 种类和 PCB 布线复杂度。事实上,在绝大多数低功耗嵌入式调试场景中,被测电压极少超过 20V(多为 3.3V / 5V / 12V 逻辑)。在下一代版本中,我将考虑把系统的标称工作电压下调至 <strong>20V 以内</strong>,从而移除稳压管钳位网络,进一步缩减体积与成本。</p>
<hr>
<h3>漏电流</h3>
<p>任何二极管的电流-电压(I-V)关系,都遵循<strong>肖克利二极管方程</strong>:</p>
<p>$$I = I_S \times (e^{\frac{V}{n V_T}} - 1)$$</p>
<ul>
<li>$I$ 是流过二极管的电流。</li>
<li>$V$ 是二极管两端的电压(正向为正,反向为负)。</li>
<li><strong>$I_S$ 是反向饱和漏电流。</strong></li>
</ul>
<p>当我们测量时:</p>
<ol>
<li>测 $10\mu A$ 电流,$100\Omega$ 电阻两端产生 <strong>$1mV$ 的正向压降</strong>。</li>
<li>此时,并联在旁边的二极管承受的 $V = +0.001V$。</li>
<li>由于 $V$ 非常非常小,指数函数 $(e^x - 1)$ 可以近似等效为一条直线。</li>
<li><strong>此时的正向电流 $I$,是直接与 $I_S$(反向漏电流)成正比的</strong></li>
</ol>
<p>如果一个二极管的 <strong>反向漏电($I_S$)极大</strong>(比如 $500\mu A$),那么它在 $1mV$ 的正向微压降下,同样会产生极大的<strong>正向微导通电流</strong>(可能高达几微安,直接把你的信号偷光)。</p>
<p>绝大多数的SS1045其 $I_S=0.1{ mA}$,但此设备选用的<strong>正芯</strong>,其规格书所写是$I_S=0.1{ uA}$,至于有没有虚标我也不清楚。</p>
<hr>
<h3>导通内阻</h3>
<p>本项目的最大理论量程设定为 <strong>8A</strong>,这基于大电流档($10\text{m}\Omega$)在 INA226 满量程 $81.92\text{mV}$ 下的物理上限($81.92\text{mV} / 10\text{m}\Omega \approx 8.19\text{A}$)。</p>
<p>然而,能测到不等于能长期工作,由于回路上串联了防反接 P-MOS 与 量程旁路 P-MOS,即使 $R_{DS(on)} \approx 10\text{m}\Omega$。</p>
<p>在 8A 电流下,整个测量路径的总发热功率惊人:</p>
<ul>
<li><strong>采样电阻发热:</strong> $P_{shunt} = I^2R = 8^2 \times 0.01\Omega = \mathbf{0.64W}$</li>
<li><strong>双 MOS 管发热:</strong> $P<em>{mos} = I^2 \times (2 \times R</em>{DS(on)}) = 64 \times 0.02\Omega = \mathbf{1.28W}$</li>
<li><strong>路径总功耗:</strong> $0.64\text{W} + 1.28\text{W} \approx \mathbf{1.92W}$</li>
</ul>
<p>近 <strong>$2\text{ W}$ 的热量</strong>如果不加装散热片或主动风冷,几十秒内核心区域温度就会突破 $80^\circ\text{C} \sim 100^\circ\text{C}$。高温更会导致采样电阻产生<strong>温漂</strong>,以及 MOS 管内阻随温度正向激增,进一步形成热失控恶性循环。</p>
<p>不仅于此,标称电流还直接影响了我们的续流二极管选型,因为极限情况下,我们要求在 $\mu\text{A}$ 档位下也要能通过 $8\text{ A}$ 的电流,这就代表二极管绝不能是个小家伙,但众所周知,更大的封装又会造成更大的结电容,更大的漏电流,反而影响测量精度。</p>
<p>为此,续流二极管做了兼容焊盘,如果不需要大电流测量,可以使用更小封装的二极管,配合 $20\ \text{m}\Omega$ 甚至 $50\ \text{m}\Omega$ 等采样电阻。
<img src="https://image.lceda.cn/oshwhub/pullImage/aa4a1988d6544441a2c82ff15036d0c3.png" alt="image.png"></p>
<p>本设备的设计初衷为<strong>低功耗分析仪</strong>,或者叫<strong>微安表</strong>。其高精度与价值体现在 $1\mu\text{A} \sim 500\text{mA}$ 的日常工作区间。对于 $2\text{ A}$ 及以上的测量,在设计中仅作为<strong>瞬时测量</strong>存在。</p>
<hr>
<h2>总结</h2>
<p>世上没有完美的东西,尤其是硬件,想要速度快、测量准、量程广甚至价格还要低 ,我只能说这是不现实的。</p>
<p>解决的方法就在于取舍,无论是硬件还是软件都留足了更改的空间,并详细说明了选型的理由。可以根据自身的情况组合出最合适选择,就我个人而言,后续会选择一个无屏幕,$20V\ 2A$ 量程的版本使用。</p>
<p>特别感谢来自立创商城的样品券,以及免费PCB制版,由于此项目不存在阻抗/差分线路(USB2不算),故不占用四层板资源,使用两层即可。</p>
<p>BOM成本以本人购入价计算。毕竟挑选有优惠的元件也是工作量的一部分。</p>
<h1>七、大赛LOGO验证</h1>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/5e3c38251a074609be1092db2003a94a.png" alt="image.png"></p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/aabb7adf3ee348d19e29dde8d7f15022.png" alt="image.png"></p>
<h1>八、演示您的项目并录制成视频上传</h1>
<p><a href="https://www.bilibili.com/video/BV1NtMa6XE8i/?spm_id_from=333.1365.list.card_archive.click&vd_source=415c03308c8301a42f26f63231e0967f" target="_blank">[开源]十元微安表(低功耗分析仪)_BILIBILI</a></p>
评论(24)