# 双向BUCK-BOOST中，MCU辅助电源电流污染了电流采样，如何消除对功率计算的影响？

**URL:** <https://bbs.eeclub.top/t/topic/404>\
**Category:** 电力电子 / Power Electronics\
**Tags:** Power, Buck-Boost, QA, Hardware, STM32\
**Created:** [2026 年7 月 29 日 14:50 UTC](https://bbs.eeclub.top/t/topic/404 "2026-07-29T14:50:19Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

作者： ![UF4OVER](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/uf4over/32/2023_2.png) [@UF4OVER](https://bbs.eeclub.top/u/UF4OVER)\
发布日期： [2026 年7 月 29 日 14:50 UTC](https://bbs.eeclub.top/t/topic/404/1 "2026-07-29T14:50:19Z")

</div>

我做了一个双向BUCK-BOOST数字电源，双侧都采用INA240A1做高端差分采样。MCU和栅极驱动需要从系统取电，做了双路供电（母线侧Buck + 电池侧Buck，二极管或门切换）。

问题：无论哪侧供电，辅助电源的电流最终都会流经电池回路的Shunt，导致小电流时（\<500mA）测量误差极大，功率计算和库仑计完全不准。

---

<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)\
发布日期： [2026 年7 月 29 日 17:15 UTC](https://bbs.eeclub.top/t/topic/404/2 "2026-07-29T17:15:03Z")

</div>

看看原理图

---

<div class="post-metadata">

作者： ![知夏](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/%E7%9F%A5%E5%A4%8F/32/1860_2.png) [@知夏](https://bbs.eeclub.top/u/%E7%9F%A5%E5%A4%8F)\
发布日期： [2026 年7 月 29 日 17:17 UTC](https://bbs.eeclub.top/t/topic/404/3 "2026-07-29T17:17:40Z")

</div>

取电点接错位置了兄弟。你把 Aux Buck 的输入端接到 Shunt 靠近电池/母线接线端子那头（即 Shunt 外侧），千万别接在 Shunt 内侧（功率回路侧）。这样辅助电源电流根本就不流经采样电阻，直接从端口走掉。  
如果现在板子打出来了没法改，先拿割线刀把 Aux Buck 输入端的铜箔割断，飞一条线直接拉到电池输入接线柱上试一下，小电流测量立马就干净了。

---

<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)\
发布日期： [2026 年7 月 29 日 17:27 UTC](https://bbs.eeclub.top/t/topic/404/4 "2026-07-29T17:27:50Z")

</div>

硬件能改的楼上说了，我补充软件侧——辅助电流其实是 **可算可测** 的，不是黑盒：

**辅助电流构成** ：

- MCU+外设静态电流：数据手册+实测，基本是常数，比如 30~80mA
- 栅极驱动电流： **I\_gate = Q\_g × f\_sw × N** （Q\_g 是 MOS 栅电荷，f\_sw 开关频率，N 是管子数量）。比如你 4 颗管、Q\_g=50nC、f=100kHz，驱动电流就是 4×50nC×100k = 20mA
- 两部分加起来 ×Buck 效率修正，就是辅助总电流

**补偿算法** ：

1. 判断当前哪路 Buck 在供电（比较两路 Buck 输出电压，或读二极管或门状态）
2. 电池侧 Buck 供电：直接 `I_batt_real = I_shunt - I_aux_batt`
3. 母线侧 Buck 供电（放电模式）：`I_batt_real = I_shunt - P_aux/(V_batt×η)`，注意 P\_aux 要用母线侧电压折算
4. 库仑计同理，每个积分周期扣掉对应的等效电荷量

**更稳的做法** ：辅助 Buck 输出端串个小 Shunt + INA199（几毛钱），实时测辅助电流，软件里动态扣除。比理论计算准，因为驱动电流随工况波动。

另外提醒：\<500mA 时你的采样信噪比本来就差，INA240A1 的 offset（±25µV 级别）在 10mΩ Shunt 上就是 ±2.5mA 误差，小电流下补偿完也别指望 1% 精度，硬件上 Shunt 阻值可以适当加大。

---

<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)\
发布日期： [2026 年7 月 29 日 17:30 UTC](https://bbs.eeclub.top/t/topic/404/5 "2026-07-29T17:30:02Z")

</div>

辅助电流路径为 battery+ → 分流器 → 辅助降压转换器 → 负载 → GND。它直接流过分流器，并在测量值中按算术方式叠加。 **修正方法：将降压转换器输入端改接到分流器的电池端子一侧** （上游）。这样辅助电流就会完全绕过测量元件。零成本，只需改动一次布局。

**情况 B——母线侧降压转换器工作，转换器处于放电模式（电池 → 母线）：**  
辅助电源从母线取电，但母线由电池通过你的转换器供电。根据能量守恒，电池会额外提供等于 P\_aux / (V\_batt · η) 的电流。该分量确实流经电池分流器——它是 **物理上真实存在的** ，不是布局造成的假象。重新布线无法消除它。

对于情况 B，有三种工程方案：

1. **在固件中进行基于模型的补偿。** 辅助负载高度可预测：MCU/静态电流（恒定，测量一次）加上栅极驱动电流，即每个开关通道正好为 Q\_g · f\_sw · N。在每个控制周期中从分流器读数中减去 I\_aux，并从库仑计积分器中减去等效电荷。
2. **直接测量。** 在辅助电源轨上增加一个小型信号电流监测器（INA199 级），可获得实时、准确的数值用于相减。相比静态模型，这种方法能更好地处理栅极驱动的动态分量。
3. **架构隔离。** 使用独立电源为 MCU 供电，并通过隔离式 DC-DC 转换器为栅极驱动器供电。这样可完全消除耦合，但代价是增加 BOM 和 PCB 面积。

我还想提醒一点：在关注电流小于 500 mA 时，请确认 INA240A1 的失调电压相对于你的分流器阻值本身不会造成相当可观的误差。补偿无法恢复被噪声底限淹没的信息。

---

<div class="post-metadata">

作者： ![UF4OVER](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/uf4over/32/2023_2.png) [@UF4OVER](https://bbs.eeclub.top/u/UF4OVER)\
发布日期： [2026 年7 月 30 日 04:25 UTC](https://bbs.eeclub.top/t/topic/404/6 "2026-07-30T04:25:59Z")

</div>

![image](https://s3.eeclub.top/original/2X/6/61252fb945163e066d1d9ce5838ef54442a83f20.png)这是后级供电

 ![image](https://s3.eeclub.top/original/2X/1/1fc00aeabc3faf19ead7dab4815c6003f2f544d2.png)这是主拓扑

# 取电点都是在高侧Shunt之外

- 我的所有取电点都是在高侧Shunt之外，这无论对于哪一级作为输入且是在BUCK的情况下，系统从输入取电，根本采集不到MCU电流，因为此时电流本身不经过Shunt

- 但是在BOOST的情况下，MCU会从电压高的地方取电，导致输出侧即使外部看上去空载，但是仍然有MCU电流流过Shunt，小电流模式下就不友好

# 假设取电点都是在高侧Shunt之内的话

- 无论哪一级作为输入，即使系统空载无输出的情况下，而此时输入依旧能看到MCU的电流，这小功率情况下，对效率计算不友好

---

<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)\
发布日期： [2026 年7 月 30 日 05:53 UTC](https://bbs.eeclub.top/t/topic/404/7 "2026-07-30T05:53:27Z")

</div>

**罪魁祸首是 D17/D6 这对肖特基或门。**

它不管你在 Buck 还是 Boost，只认"哪边电压高"。Boost 时输出侧电压高，辅助电源就从输出侧抽电流——但输出侧的能量是输入侧通过电感升压送上去的，所以输入侧 Shunt 必然要多承担 P\_aux/η 的电流。

**改法：把被动或门换成主动切换。**

用一个 **P-MOS + 小信号 NMOS** 替代 D6（或两侧都换），MCU 根据当前工作模式控制通断：

- **Buck 模式（高压→低压）** ：导通高压侧 MOS，关断低压侧，辅助电源从高压侧取电
- **Boost 模式（低压→高压）** ：导通低压侧 MOS，关断高压侧，辅助电源从低压侧取电

核心原则： **辅助电源始终从功率级的"输入侧"取电** 。功率电流和辅助电流同源同向，Shunt 测到的是总和，外部负载电流 = 总电流 − 辅助电流，但关键是 **空载时 Shunt 读数就是真实的辅助电流** ，你可以在软件里精确扣除，而不是被或门的自动切换搞得两边乱跳。

---

<div class="post-metadata">

作者： ![知夏](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/%E7%9F%A5%E5%A4%8F/32/1860_2.png) [@知夏](https://bbs.eeclub.top/u/%E7%9F%A5%E5%A4%8F)\
发布日期： [2026 年7 月 30 日 05:59 UTC](https://bbs.eeclub.top/t/topic/404/8 "2026-07-30T05:59:15Z")

</div>

这个问题本质是 **双向拓扑里辅助电源的电流路径无法同时满足"采样纯净"和"能量不经过 Shunt"** 。我画一下你就明白了：

**场景 A：取电点在 Shunt 外（你的现状）**

- Buck 模式：输入侧电压高 → 或门选输入 → 辅助电流从输入 Shunt 前取走 → 输入 Shunt 纯净 ✓
- Boost 模式：输出侧电压高 → 或门选输出 → 辅助电流从输出 Shunt 前取走 → 但输出能量来自输入 → 输入 Shunt 看到 P\_aux/(V\_in·η) 的额外电流 ✗

**场景 B：取电点在 Shunt 内**

- 任何模式下辅助电流都过 Shunt → 空载时 Shunt 永远非零 ✗

**所以纯靠改取电点位置无解** ，必须引入"模式感知"或"物理隔离"。

**方案一：模式感知主动取电（推荐）**  
如楼上所说，用 MOS 开关替代二极管，MCU 根据当前是 Buck 还是 Boost 控制从哪一侧取电，始终让辅助电源挂在功率级的输入侧。

**方案二：软件实时扣除（最省事）**  
辅助电流 = MCU 静态电流（mA 级，几乎恒定）+ 栅极驱动电流（Q\_g·f\_sw·N，与开关频率成正比）。两部分都可以精确建模。在控制算法里：

```auto
I_load = I_shunt - I_aux / η_buck_aux

```

库仑计同样扣除。精度能做到 1% 以内，比你改硬件快得多。

---

<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)\
发布日期： [2026 年7 月 30 日 06:03 UTC](https://bbs.eeclub.top/t/topic/404/9 "2026-07-30T06:03:43Z")

</div>

兄弟，你把硬件抽头这事儿想复杂了。你已经设计了一套系统，让 MCU 从电压最高的那一侧取电。这是个很棒、很可靠的设计，能让“大脑”保持供电！

但你在抱怨数学“不友好”。欢迎来到物理的世界！在 Boost 模式下，你的 MCU 本身就是负载。如果你把抽头移到分流器的内侧，那么在 Buck 模式下你就会遇到完全相反、但同样头疼的问题。

别为了这个重新打一块板子。做一个快速的台架特性测试：在不同开关频率下，测量进入 LMR38020 第 3 脚（`VIN`）的实际电流。把它作为查找表存到你的 flash 里。

当你的代码计算效率时，直接用：

P\_{in\_true}=V\_{in} \times I\_{sense\_in}+(\text{Active\_Tap\_Logic} \times P\_{aux})

用软件修掉，然后就可以收工了！
