4、定高模式(Altitude Hold Mode):气压计与超声波原理、垂直速度与位置控制、油门锁定逻辑、常见问题(气压计漂移)

定高模式,说白了就是让无人机自己管住高度。你松了油门,它不会直接砸下来,而是悬在当前位置。这个功能看似简单,背后却涉及传感器融合、控制逻辑和一堆工程细节。我最早接触定高模式是在一个农业植保项目上,当时飞机在麦田上方忽高忽低,打药不均匀,折腾了好几个通宵才把问题定位到气压计上。嗯,今天我们就把它彻底讲透。

4.1 高度传感器:气压计与超声波

定高模式的核心,是知道飞机当前有多高。常用的传感器有两种:气压计和超声波。它们各有各的脾气。

4.1.1 气压计原理

气压计测量的是大气压强。高度越高,气压越低。这个关系可以用标准大气模型来描述:

P = P₀ × (1 - 0.0065 × h / T₀)^(5.2561)

其中 P₀ 是海平面标准气压(1013.25 hPa),T₀ 是海平面标准温度(288.15 K),h 是海拔高度(米)。

实际使用中,我们更关心相对高度。起飞时记录一个基准气压值,之后的气压变化都跟这个基准比。这样能消除海平面气压波动的影响。

我的经验:气压计对气流非常敏感。螺旋桨下洗气流会直接冲击传感器,造成读数跳动。我习惯在飞控外壳上加一个海绵罩,或者把气压计放在一个独立的腔室里,用细管引出静压孔。这个小改动,能减少至少30%的噪声。

4.1.2 超声波原理

超声波传感器发射40kHz的声波脉冲,测量回波时间。距离 = 声速 × 时间 / 2。声速受温度影响,公式是:

v = 331.3 × sqrt(1 + T / 273.15)

T 是摄氏温度。所以很多超声波模块会内置温度补偿。

超声波的优势是精度高,近距离(0.1~5米)误差可以控制在厘米级。但它有两个硬伤:一是测量角度窄(通常15°~30°),地面不平或倾斜时读数不准;二是受噪声干扰,比如电机电调的高频啸叫。

传感器 量程 精度 更新率 弱点
气压计 0~5000m ±0.5m(典型) 10~100Hz 漂移、气流敏感
超声波 0.1~5m ±0.02m 20~50Hz 角度窄、噪声干扰

4.2 垂直速度与位置控制

有了高度测量值,接下来就是怎么控制。我见过不少新手直接拿高度误差去调油门,结果飞机像弹簧一样上下震荡。正确的做法是分层控制。

4.2.1 串级PID结构

定高控制通常采用串级PID:外环是位置环(高度),内环是速度环(垂直速度)。

// 伪代码示例
float target_altitude = 10.0;  // 目标高度10米
float current_altitude = get_altitude();

// 外环:位置误差 -> 目标速度
float altitude_error = target_altitude - current_altitude;
float target_velocity = Kp_alt * altitude_error;

// 内环:速度误差 -> 油门输出
float velocity_error = target_velocity - current_velocity;
float throttle_output = Kp_vel * velocity_error + Ki_vel * integral_vel + Kd_vel * derivative_vel;

为什么要分两层?因为直接调位置,响应太慢;直接调加速度(油门),又太敏感。速度环作为中间层,能让飞机平滑地趋近目标高度。

关键参数调法:我一般先调内环速度环。把飞机悬停,手动给一个垂直速度指令,观察响应是否干脆、有没有超调。内环调稳了,再调外环位置环。外环的P值不要太大,否则飞机会在目标高度附近来回穿。

4.2.2 垂直速度的获取

垂直速度不能直接测量,需要估算。常用方法:

  • 气压计微分:对高度值求导。但噪声会被放大,必须配合低通滤波。
  • 加速度计积分:对Z轴加速度积分。但零偏会累积,几分钟就飘到天上去。
  • GPS垂直速度:精度低,更新慢,只适合辅助。
  • 融合方案:用互补滤波或卡尔曼滤波,把气压计和加速度计的数据融合起来。我项目里常用互补滤波,计算量小,效果够用。

4.3 油门锁定逻辑

定高模式下,油门杆不再直接控制电机转速,而是变成高度指令。这个逻辑很多人一开始不适应。

4.3.1 油门杆映射

遥控器的油门通道(通常50%为中点)被映射为垂直速度指令:

  • 油门杆在中点:目标垂直速度为0,飞机保持当前高度。
  • 油门杆向上推:目标垂直速度为正(上升),推得越多,上升越快。
  • 油门杆向下拉:目标垂直速度为负(下降)。

映射关系通常是线性的,但我会加一个死区(中点附近±5%),防止手抖导致飞机上下晃动。

4.3.2 油门锁定与解锁

进入定高模式时,飞控会记录当前的油门输出值作为基准。之后,控制环只在这个基准上做微调。这样做的好处是:即使控制环暂时失效,飞机也不会直接掉下来。

注意:我曾经遇到一个案例,飞机在定高模式下突然掉高。排查后发现是电池电压下降,电机转速跟不上,但控制环还在拼命加油门。结果油门输出饱和了,高度却拉不回来。解决方案是加入油门前馈——根据当前电池电压和悬停油门估算一个基础值,控制环只负责修正量。

4.4 常见问题:气压计漂移

定高模式最大的敌人,就是气压计漂移。你明明没动油门,飞机却自己慢慢上升或下降。这个问题我踩过不少坑。

4.4.1 漂移的原因

  • 温度变化:飞控板上的电子元件发热,导致气压计周围温度升高,气压读数偏大(相当于高度变低)。飞机就会自动加油门上升。
  • 气流冲击:螺旋桨下洗气流直接吹到气压计上,造成瞬时压力波动。
  • 传感器老化:MEMS气压计的零点会随时间缓慢漂移。
  • 天气变化:冷锋过境、气压系统移动,都会导致基准气压变化。

4.4.2 应对策略

  1. 硬件隔离:用海绵或泡棉覆盖气压计,开一个小孔引静压。避免直吹。
  2. 温度补偿:很多气压计芯片内置温度传感器,可以在软件里做补偿。我习惯在飞控上电后先等30秒,让温度稳定再解锁。
  3. 软件滤波:用滑动平均或卡尔曼滤波平滑高度数据。但滤波太强会引入延迟,导致控制响应变慢。
  4. 辅助传感器融合:超声波在低空(5米内)可以完全替代气压计。GPS高度虽然精度低,但可以用来修正长期漂移。
  5. 定期校准:起飞前让飞控静止几秒,自动记录当前气压作为基准。如果飞行中检测到异常漂移,可以触发自动重新校准。
避坑指南:我曾经在一个项目里,飞机起飞后高度一直缓慢上升,10分钟飘了20米。查了半天,发现是气压计旁边放了一个5V稳压芯片,发热严重。后来把气压计挪到板子边缘,远离热源,问题就解决了。所以布局阶段就要考虑热隔离。

4.5 知识体系总览

下面这张图总结了定高模式的完整知识结构,从传感器到控制逻辑,再到常见问题。你可以把它当作一个快速索引。

定高模式知识体系 定高模式知识体系 传感器 控制 执行与问题 气压计 超声波 位置环 速度环 油门锁定 气压漂移 标准大气模型 温度补偿 静压孔设计 声速温度修正 波束角限制 噪声抑制 串级PID 参数整定 死区设置 互补滤波 卡尔曼滤波 加速度融合 热漂移 气流干扰 传感器老化 核心思路:传感器融合 + 串级控制 + 工程补偿 没有完美的传感器,只有合理的系统设计

定高模式看起来简单,但要做好,需要吃透传感器特性、控制算法和工程细节。我做了这么多年,每次遇到新机型,定高这块还是要反复调。嗯,这就是工程——没有银弹,只有扎实的基本功和不断的试错。