3. 电池参数调优:BAT_MONITOR、BAT_V_EMPTY、BAT_V_FULL 等电压补偿与容量标定参数详解

电池参数调优,说白了就是让飞控知道你的电池到底还剩多少电。我见过太多飞手,飞机飞着飞着突然掉高,一看电压曲线像跳崖一样——这就是电池参数没设对。

PX4 的电池估算逻辑其实不复杂:它通过实时监测电压和电流,结合你设定的空载满电电压、空载亏电电压,再考虑负载下的压降,算出一个剩余百分比。但这里有个坑——电池的放电曲线不是线性的。你想想看,锂电池在 4.2V 到 3.8V 之间放电很平缓,但一旦掉到 3.7V 以下,电压会急剧下降。如果参数设得不准,飞控就会误判剩余电量。

核心原则:电池参数调优的目标是让飞控估算的剩余电量与实际可用电量误差控制在 ±5% 以内。超过这个范围,续航优化就无从谈起。

3.1 BAT_MONITOR:选择正确的电池监控方式

这个参数决定了飞控用什么方式来估算电量。PX4 支持三种模式:

参数值 监控方式 适用场景 精度
0 禁用电池监控 仅用于调试或仿真 无
1 仅电压估算 无电流传感器的低成本飞控 低(±15%~20%)
4 电压 + 电流积分 有电流传感器的标准配置 高(±3%~5%)

我个人习惯,只要飞控支持电流传感器,就一定用 BAT_MONITOR = 4。为什么?因为纯电压估算在负载变化时误差非常大。我记得有一次帮朋友调一架六轴,他用的是模式 1,悬停时电量显示还有 40%,一拉油门电压瞬间掉到报警值——这就是典型的电压估算不准。

小技巧:如果你用的是 Pixhawk 系列飞控,建议检查一下电流传感器是否校准过。很多飞友买了新飞控直接飞,结果电流读数偏差 20% 以上。校准方法很简单:用万用表测实际电流,然后调整 BAT_A_PER_V 参数。

3.2 BAT_V_EMPTY 与 BAT_V_FULL:定义电池的工作区间

这两个参数定义了电池的「空」和「满」对应的空载电压。注意,是空载电压,不是带负载时的电压。

对于常见的 4S 锂电池(标称 14.8V):

  • BAT_V_FULL:满电空载电压,通常设为 4.2V × 电芯数 = 16.8V
  • BAT_V_EMPTY:亏电空载电压,通常设为 3.3V × 电芯数 = 13.2V

但这里有个细节——不同品牌的电池,内阻不同,放电平台也不同。我曾经测试过三款不同品牌的 4S 5200mAh 电池,它们的实际放电曲线差异很大:

电池品牌 内阻 (mΩ) 实际可用容量 (mAh) 建议 BAT_V_EMPTY
品牌 A(高 C 数) 2.8 4950 3.3V/电芯
品牌 B(普通) 4.5 4780 3.4V/电芯
品牌 C(旧电池) 7.2 4320 3.5V/电芯

看到了吗?内阻越大的电池,实际可用容量越低,亏电电压也要设得更高一些。否则飞控会以为还有电,实际上电池已经快被榨干了。

避坑指南:我曾经遇到过一位用户,把 BAT_V_EMPTY 设成了 3.0V/电芯,想着多榨点电。结果飞机在 30% 电量时突然断电坠毁。因为 3.0V 已经是锂电池的过放电压了,电池保护板直接切断了输出。安全第一,建议至少留 0.2V 的余量。

3.3 电压补偿参数:BAT_V_LOAD_DROP 与 BAT_R_INTERNAL

这两个参数是电压估算模式下的关键补偿项。它们的作用是:根据当前电流大小,估算电池内阻造成的压降,从而反推出空载电压。

公式很简单:
空载电压 = 测量电压 + 电流 × 内阻

但实际调参时,我建议用以下步骤:

  1. 测量电池内阻:用内阻仪或充电器测一下电池的实际内阻
  2. 设置 BAT_R_INTERNAL:将测量值(单位 mΩ)填入,注意 PX4 的单位是 Ω,需要换算
  3. 设置 BAT_V_LOAD_DROP:这个参数是每 1A 电流的压降,单位是 V/A。如果内阻是 5mΩ,那么 BAT_V_LOAD_DROP = 0.005

经验值参考:对于常见的 4S 锂电池:

  • 新电池(内阻 2~4mΩ):BAT_V_LOAD_DROP = 0.002 ~ 0.004
  • 旧电池(内阻 5~8mΩ):BAT_V_LOAD_DROP = 0.005 ~ 0.008
  • 老化电池(内阻 > 10mΩ):建议更换,不要调参硬撑

3.4 容量标定参数:BAT_CAPACITY

这个参数告诉飞控电池的总容量,单位是 mAh。但这里有个常见的误区——很多人直接写电池标称容量,比如 5200mAh。实际上,应该写实际可用容量。

为什么?因为电池的标称容量是在 0.2C 放电条件下测的,实际飞行中放电电流可能达到 5C~10C,容量会打折扣。我实测过,一块标称 5200mAh 的电池,在 10A 放电下只能放出 4800mAh 左右。

所以我的做法是:

  1. 用充电器充满电池
  2. 用恒流放电仪以 1C 电流放电到 3.5V/电芯
  3. 记录实际放出容量,填入 BAT_CAPACITY

如果你没有放电仪,也可以用飞行日志来反推。飞完一次完整的航线后,查看日志中的 battery.remaining 和 battery.discharged_mah,如果剩余电量显示不准,就调整 BAT_CAPACITY 直到匹配。

3.5 参数调优流程总结

嗯,到这里参数都讲完了。我画了一张流程图,帮你理清调优顺序:

电池参数调优流程图 1. 设置 BAT_MONITOR 2. 设置 BAT_V_FULL / BAT_V_EMPTY 3. 设置 BAT_R_INTERNAL / BAT_V_LOAD_DROP 4. 设置 BAT_CAPACITY(实际可用容量) 5. 飞行验证 & 日志检查 说明: 如果飞行日志显示剩余电量与实际不符,沿虚线箭头回退到对应步骤重新调整。 建议每次只改一个参数,飞一个架次验证,不要一次性改多个。

3.6 实战案例:一次完整的参数调优

我拿最近调的一架四轴来举例。配置是:4S 5200mAh 电池,Pixhawk 4 飞控,带电流传感器。

初始参数:

  • BAT_MONITOR = 4
  • BAT_V_FULL = 16.8V
  • BAT_V_EMPTY = 13.2V
  • BAT_CAPACITY = 5200
  • BAT_R_INTERNAL = 0.005

第一次飞行:悬停 15 分钟后,日志显示放电 2800mAh,剩余电量显示 46%。但落地后用充电器回充,只充进去了 2500mAh。说明飞控多算了 300mAh,实际容量没那么多。

调整:我把 BAT_CAPACITY 从 5200 降到 4800,同时用内阻仪测出实际内阻是 6.2mΩ,把 BAT_R_INTERNAL 改为 0.0062。

第二次飞行:同样悬停 15 分钟,放电 2550mAh,剩余电量显示 47%。落地回充 2480mAh,误差缩小到 70mAh,约 1.5%。嗯,这个精度就够用了。

小技巧:调参时建议用 Mission Planner 或 QGroundControl 的实时曲线功能,同时监控电压、电流和剩余电量三条曲线。如果电压下降时剩余电量也跟着快速下降,说明 BAT_V_EMPTY 设得太高了;如果电压已经很低了剩余电量还显示很多,那就是设得太低了。

电池参数调优说难不难,说简单也不简单。关键是要理解每个参数背后的物理意义,而不是盲目抄别人的数值。毕竟,你的电池、你的飞机、你的飞行风格都是独一无二的。