跳到主要内容

气压计

气压计通过测量空气压力确定高度。它非常灵敏,甚至呼出的一口气都会影响读数,并且对温度也非常敏感。因此通常内置高精度温度传感器用于补偿。

Betaflight 使用气压计数据辅助确定飞行器相对于起飞点的高度,并辅助 GPS Rescue 中的高度控制。

大多数情况下,Betaflight 应能自动检测气压计。

气压计用于测量相对高度变化远比测量绝对高度更有价值。英飞凌 DPS368 等现代气压计芯片能检测极小的高度变化(小于 10 cm),具有良好的噪声抑制,并以 40 Hz 更新数值。

DPS310 比旧款 BMP280 好得多,DPS368 又更进一步。DPS310 与 BMP280 的克隆芯片被广泛使用,但其可靠性或温度补偿通常不如原厂芯片。

Betaflight 在上电后不久将气压计数据归零,因此气压计高度相对于上电点计算。解锁时,零值可能再次校正为零。

暴露在湍流气流中的气压计,例如桨洗流中,会返回噪声很大的高度值。通常建议在气压计上覆盖柔软泡棉以减轻该问题。

电机启动而四轴飞行器仍在地面时,螺旋桨和地面间的正压可能被气压计解释为负高度。起飞后该现象会消失。

备注

请勿在气压计芯片上涂覆三防漆!

三防漆可能覆盖用于测量气压的通气孔,造成错误的高度读数,并使读数随温度变化产生大量漂移。

确认气压计工作正常

首先确认已在 Configurator 的 Configuration 页面启用 Barometer。

顶部的 Barometer 图标应随之亮起。这表示固件包含 Baro 支持及合适的驱动程序。

多数气压计经 USB 供电,但部分需要 LiPo 供电。若图标未亮起,请拆下螺旋桨,然后尝试在 LiPo 接口接入电池或等效电源,观察结果。

若 Barometer 图标亮起,进入 Sensors 标签页并在顶部选择 Barometer,应能看到气压计高度读数。将四轴飞行器或飞控上下移动约 1 m,读数也应变化约 1 m。出现少量噪声和延迟属于正常现象。

高级检查

Baro Debug 模式返回:

Debug数据
0状态(初始化期间)
1绝对压力,单位 hPa
2气压计报告的温度,单位 deg C * 100
3仅由 Baro 得出的高度估计,单位 cm

这些值可记录到日志中,或显示在 Configurator Sensors 标签页的图表内。请检查温度读数是否准确;2145 表示 21.45 deg C。若误差很大,芯片可能是 DPS310 克隆品,温度补偿可能较差。

气压计与 GPS 的高度估算

气压计和 GPS 模块都会提供高度数据。

气压计比 GPS 模块响应更快,但也可能更嘈杂。另一方面,除非 GPS 具有良好的 hDOP 指示,GPS 高度估算在一次飞行中可能波动数米。DPS368 等现代气压计芯片通常比多数 GPS 模块更快、更准确。

altitude_sourceDEFAULT 方法会“混合”两个来源;若只存在一个来源,则使用可用来源。用户也可强制使用 BARO_ONLYGPS_ONLY,以决定哪个来源能在 GPS Rescue 中提供更佳的高度控制。

提示

若在平坦场地以 10 m 返航高度启动 GPS Rescue,且返航过程保持目视观察,便能直观看到高度控制稳定性和下降平顺性。请分别测试仅 Baro、仅 GPS;若两者单独都正常,再测试 DEFAULT 方法。通常 DEFAULT 效果最好。

altitude_source = DEFAULT 时,用户可调整 Baro 和 GPS 对最终高度读数的相对影响。

有 GPS 模块时,Betaflight 会取得 GPS 的水平精度衰减因子(hDOP),用以估计 GPS 高度估算精度。系统根据 hDOP 分配内部 gpsTrust 值。默认值为 0.3,即 Baro 可用时 GPS 仅占高度读数的 30%;但当 dDOP 表明 GPS 读数准确时,gpsTrust 最高可达 0.9。

两个读数差异较大时,CLI 设置 altitude_prefer_baro 会进一步修改 gpsTrust。默认 altitude_prefer_baro = 100 时,两个传感器相差小于 1 m,GPS 信任度不受影响;相差 2 m 时降为一半;相差 5 m 时降至正常的 1/5。设为 50 时,必须相差 4 m 才会使 GPS 信任度减半。设为零时,读数差异不会影响 GPS 信任度估算。

因此,若同时具备 GPS 与 Baro,并将 altitude_source 设为 DEFAULT,两者的相对权重取决于 GPS 对自身高度测量精度的 hDOP 估计、两读数的差异大小以及用户的 altitude_prefer_baro 设置。altitude_prefer_baro 设为默认 100 时,除非差异较小且 GPS hDOP 表明 GPS 准确,否则 Baro 读数将占主导地位。较低的 altitude_prefer_baro 值会提高 GPS 的相对影响。

简而言之,若拥有性能良好的 Baro,尤其是正品英飞凌 DPS310、DPS368,或可能是 BMP280,建议接受默认 altitude_prefer_baro 值 100,并使用 DEFAULT 混合方法。

提示

使用 Altitude Debug 详细评估 GPS 与 Baro 读数:

Debug数据
0gpsTrust 值
1baroAltitude,单位 cm
2gpsAltitude,单位 cm,解锁时归零
3Vario

气压计固件支持

在 Betaflight 4.5 及更高版本中,板卡 Config 文件会自动加入基础 BARO 代码、该板制造商使用的 Baro 芯片驱动、接口类型、接口引脚等。

这就是大多数情况下 Baro 能够“开箱即用”的原因。

若板卡 Config 文件不含 Baro 支持,而你希望外接气压计,在 Betaflight 4.5 中必须手动将 BARO 代码和所需驱动加入固件构建。

以 DPS310 气压计为例,在 Betaflight 地面站“固件烧写工具”的“自定义定义”区域输入 BARO BARO_DPS310BARO 启用基础气压计代码,BARO_DPS310 加入 DPS_310 驱动代码。对 BMP280,应使用 BARO BARO_BMP280

4.4 及更早版本的全部固件构建均包含所有 Baro 代码和所有驱动。

气压计总线连接

气压计几乎都通过 I2C 接口连接,尽管部分使用 SPI。板卡 Config 文件应定义 Baro 的接口 / 总线细节及其所用引脚。

飞控可能有一个或两个 I2C 总线(或“设备”)。Config 文件会自动为 Baro 设置 baro_i2c_device

未定义 baro_i2c_device 的板卡,该值为 0。若手动将外接 Baro 接到 I2C 接口,用户必须手动将 baro_i2c_device 设为总线 1 或 2,具体取决于 Baro 实际连接的总线。

气压计硬件支持

如上所述,在 Betaflight 4.5 或更高版本中,板载气压计芯片所需的驱动由 Config 文件定义。其他或不同气压计芯片的驱动,必须按前述方法在 Betaflight 地面站“固件烧写工具”的“自定义定义”中手动加入。

每个气压计芯片都有默认 I2C“地址”。部分气压计支持备用地址,这有时会干扰自动检测。

默认情况下,Betaflight 的 baro_i2c_address 为 0;Betaflight 会在支持气压计的默认地址上搜索,并连接到找到的 Baro。注意,4.5 及更高版本只支持已构建进固件的 Baro 驱动。

气压计默认 I2C 地址说明
BMP085119与 BMP180 地址相同
MS5611119不常见
BMP280118备用地址为 119,即 BMP180 默认地址
QMP6988112不常见
DPS310118备用地址为 119(规格书建议作为默认值)
SPL06118BMP280 克隆品;备用地址为 119,因此可表现得像 BMP180
BMP388118与 BMP280 和 SPL06 地址相同
2SMPB_02B112不常见
LPS22DF93不常见

baro_i2c_address 设为自定义值,Betaflight 仅搜索在该指定 I2C 地址响应的气压计。

baro_hardware CLI 命令默认是 AUTO,即 Betaflight 尝试自动识别正确的 Baro 芯片。尽管许多芯片共享同一 I2C 地址,但同一个 I2C 地址上一次只能存在一个 Baro。

某些情况下,必须强制 Betaflight 使用某一芯片的驱动,例如已确定所用芯片。示例:set baro_hardware = DPS310 会强制 Betaflight 使用 DPS310 驱动(显然在 4.5 中必须已将该驱动构建进固件)。

Betaflight GitHub 列出了全部受支持的气压计及其驱动代码,其中包括搜索使用的 I2C 地址等信息。

注意,几乎所有气压计芯片都有相同的 I2C 地址。若不是 118,最常见的备用选项是 119(但较少见)。

未识别气压计

若使用默认 baro_i2c_address = 0 设置或自动气压计检测时,无法识别受支持 Baro,可能的问题和解决方法如下:

问题解决方法
未在“配置”选项卡启用 Baro检查 Baro 开关是否为“开启”
Baro 芯片仅由 LiPo 供电在 LiPo 输入端供电测试
baro_i2c_device 或总线值不正确应为 1 或 2,且必须与气压计芯片焊接的实际总线 / 引脚相符
固件未包含该气压计的驱动代码可在 Betaflight 地面站“固件烧写工具”的“自定义定义”中加入额外驱动
气压计芯片地址已自定义从上表中尝试手动配置 baro_i2c_address
同一 I2C 地址存在多个气压计硬件驱动且检测错误若已确定板上气压计型号,将 baro_hardware 设为该型号
气压计芯片损坏或接线错误检查接线或更换芯片

CLI 命令汇总

  • 气压计相关 CLI 变量:
变量范围说明
baro_bustypeNONEI2CSPI指定所选气压计设备连接的总线类型。
baro_i2c_device0 ~ 对应 MCU 类型的最大 I2C 总线序号(从 1 开始,与 target.hI2Cx 表达式的 x 相同)baro_bustypeI2C 时,指定设备连接的 I2C 总线序号。0 表示“无”。
baro_i2c_address0 ~ 119(0x77)以 7 位表示法指定设备 I2C 地址。0 是指定“驱动默认地址”的特殊值。1 ~ 7 无效,行为不可预测。
baro_spi_device0 ~ 对应 MCU 类型的最大 SPI 总线序号(从 1 开始,与 target.hSPIx 表达式的 x 相同)baro_bustypeSPI 时,指定设备连接的 SPI 总线序号。0 表示“无”。
baro_hardwareNONEAUTOBMP280MS5611BMP085NONE = 禁用气压计支持。AUTO = 固件按预定义规则确定设备。BMP280MS5611BMP085 = 显式指定所用设备。
  • 若设备通过 SPI 连接,可使用 resource CLI 命令指定 CS(Chip Select)引脚:
资源名称说明
BARO_CS指定 CS(Chip Select)引脚以启用 SPI 连接的气压计设备。

旧版文档

有关约 3.2 时开展的初始 Baro 代码开发,请参阅旧版文档 /docs/wiki/guides/archive/barometer-configuration