3、天线阵列设计基础

天线阵列设计,说实话,是蓝牙测向功能里最容易被低估的一环。很多人觉得算法写好了就行,天线随便摆摆。我在项目里吃过这个亏,后来才明白——天线阵列的物理实现,直接决定了你测向的精度上限。

这一章我们聊聊天线理论入门、常见的阵列类型、间距与相位差的关系,还有切换时序。嗯,内容有点多,但都是干货。

3.1 天线理论入门

先简单回顾一下天线的基本概念。天线说白了就是把电信号转换成电磁波的器件。对于蓝牙测向来说,我们最关心的是天线的方向图相位中心

  • 方向图:天线在不同方向上的辐射强度。全向天线在水平面是圆形的,但实际总有偏差。
  • 相位中心:电磁波等效的辐射点。理想情况下,相位中心是固定的。但实际天线,尤其是低成本PCB天线,相位中心会随频率漂移。
注意: 相位中心漂移是测向误差的隐形杀手。我曾经用一款陶瓷天线做阵列,结果测向角度偏差了十几度,查了三天才发现是天线本身相位中心不稳定。

对于蓝牙AoA/AoD应用,我们通常使用贴片天线偶极子天线。贴片天线增益高、方向性好,但带宽窄。偶极子天线带宽宽、全向性好,但增益低。我个人习惯在接收端用贴片天线,发射端用偶极子天线——当然,这取决于你的具体场景。

3.2 天线阵列类型

天线阵列的类型很多,但蓝牙测向里最常用的就两种:均匀线性阵列(ULA)和均匀圆形阵列(UCA)。

3.2.1 均匀线性阵列(ULA)

ULA就是把天线等间距排成一条直线。结构简单,算法成熟,是入门首选。

ULA的特点:

  • 只能测量一维角度(通常是水平角或俯仰角)
  • 角度分辨率取决于天线数量和间距
  • 存在180度模糊问题(前后对称)

举个例子,4根天线间距λ/2的ULA,可以覆盖-90°到+90°的范围。但如果你把间距拉大到λ,就会出现栅瓣,角度估计会出错。我在一个项目中为了省天线数量,把间距设成了λ,结果测向结果乱跳——嗯,后来老老实实改回λ/2了。

3.2.2 均匀圆形阵列(UCA)

UCA把天线均匀分布在圆周上。它能测量二维角度(水平角+俯仰角),而且没有180度模糊问题。

UCA的特点:

  • 360度全覆盖,无死角
  • 可以同时估计方位角和俯仰角
  • 算法复杂度比ULA高
  • 对天线一致性要求更高

我记得第一次做UCA时,选了8根天线,半径设为λ/2。结果发现天线之间的互耦效应很严重,导致相位测量偏差。后来加了去耦结构才解决。所以,UCA虽然功能强大,但实现难度也大。

特性 ULA UCA
测量维度 一维 二维
覆盖范围 180° 360°
算法复杂度
天线数量 少(2-8根) 多(4-12根)
常见应用 室内定位、门禁 机器人、无人机

3.3 天线间距与相位差关系

这是整个测向技术的核心。你想想看,我们怎么从天线接收到的信号里提取角度信息?答案就是相位差

假设两根天线间距为d,信号入射角为θ。那么信号到达两根天线的路程差是d·sin(θ)。这个路程差对应的相位差就是:

Δφ = 2π · d · sin(θ) / λ

其中λ是信号波长。对于蓝牙,λ ≈ 12.3 cm(2.44 GHz)。

所以,只要测出两根天线之间的相位差Δφ,就能反推出角度θ:

θ = arcsin(Δφ · λ / (2π · d))

这里有几个关键点:

  • 间距d不能太大:d > λ/2时,sin(θ)可能对应多个Δφ,出现角度模糊。这就是奈奎斯特采样定理在空间域的体现。
  • 间距d不能太小:d太小,相位差变化不敏感,角度分辨率低。
  • λ/2是最佳折中:既能覆盖±90°,又能最大化分辨率。
经验之谈: 我建议d取λ/2到λ/3之间。λ/2是理论最优,但实际中天线互耦会影响相位。我做过对比测试,λ/3的间距在互耦抑制上更好,虽然分辨率略低,但整体测向稳定性更高。

3.4 天线切换时序

蓝牙测向里,我们不是同时读取所有天线的信号,而是依次切换。这就涉及到切换时序的设计。

蓝牙Core Spec规定,AoA/AoD的切换发生在CTE(Constant Tone Extension)期间。CTE是一段未调制的载波信号,持续时间可以是16μs到160μs。

切换时序的关键参数:

  • 切换时间(Switching Time):从一个天线切换到下一个天线所需的时间。典型值1-2μs。
  • 稳定时间(Settling Time):切换后,信号稳定下来所需的时间。典型值1-2μs。
  • 采样时间(Sampling Time):在每个天线上采集I/Q数据的时间。典型值4-8μs。

举个例子,一个4天线阵列的切换时序:

CTE开始
天线1:稳定2μs → 采样4μs
天线2:切换1μs → 稳定2μs → 采样4μs
天线3:切换1μs → 稳定2μs → 采样4μs
天线4:切换1μs → 稳定2μs → 采样4μs
CTE结束

总时间 = 2 + 4 + (1+2+4)×3 = 6 + 21 = 27μs。这个时间必须小于CTE的总时长。

小技巧: 我习惯在切换时序里预留一点余量。比如稳定时间设成2.5μs而不是2μs。因为实际电路中,RF开关的切换特性会受温度影响。我曾经在-20°C环境下测试,稳定时间比常温多了0.8μs,差点导致采样数据出错。

另外,切换顺序也很重要。我建议采用循环切换而不是随机切换。循环切换可以让每个天线在CTE内被多次采样,提高角度估计的鲁棒性。

嗯,这一章的内容就到这里。天线阵列设计是个实践性很强的领域,光看理论是不够的。我建议你拿到开发板后,先搭一个简单的2天线ULA,用示波器看看切换波形,再慢慢扩展到更多天线。这样踩过的坑,印象才深刻。