4. 天线阵列设计:从理论到实战

天线阵列设计,说白了就是给蓝牙信号装上「耳朵」和「眼睛」。

我刚开始接触这个领域时,总觉得天线不就是一根铜线嘛。直到第一次做AoA定位测试,发现测出来的角度偏差30度...嗯,那才意识到天线阵列才是整个测向系统的灵魂。

4.1 天线阵列类型:线阵还是圆阵?

做AoA/AoD定位,首先得选阵列拓扑。我个人习惯把问题拆成两步:先看你要测几个角度,再看安装空间够不够。

4.1.1 均匀线阵(ULA)

均匀线阵,就是天线等间距排成一条直线。结构最简单,成本最低。

核心特点:

  • 只能测一个角度:到达角(AoA)的方位角
  • 无法区分信号来自阵列前方还是后方(180度模糊)
  • 适合一维定位场景,比如走廊、隧道

我在项目中遇到过一个问题:用4元线阵做室内定位,结果标签在阵列正前方和正后方时,测出来的角度一模一样。后来加了第二排天线组成L型阵列才解决。

4.1.2 均匀圆阵(UCA)

圆阵就灵活多了。天线均匀分布在圆周上,能同时测方位角和俯仰角。

参数 均匀线阵 均匀圆阵
可测角度 仅方位角 方位角+俯仰角
角度模糊 180度模糊 无模糊
天线数量 最少2个 最少3个
安装难度
典型应用 门禁、闸机 无人机、机器人

你想想看,如果做无人机降落引导,光有方位角不够,还得知道高度角。这时候圆阵就是唯一选择。

4.2 阵元间距与波长的关系:别踩这个坑

这是天线阵列设计里最容易翻车的地方。我见过太多工程师,PCB画好了才发现间距不对,只能重新打板。

黄金法则:阵元间距 d = λ/2

对于BLE 5.0,工作在2.4GHz频段,波长 λ ≈ 12.5cm。所以 d ≈ 6.25cm。

为什么会这样?我简单解释一下:

  • d > λ/2:会出现栅瓣(grating lobe),说白了就是天线「看花眼」,把假方向当成真方向
  • d < λ/2:天线之间耦合太强,互相干扰,测角精度下降
  • d = λ/2:刚好平衡,既没有栅瓣,耦合也在可接受范围

我曾经在一个项目中,为了把天线做小,把间距缩到了3cm。结果测出来的角度抖动得像心电图。后来老老实实改回6.25cm,问题立刻解决。

实战技巧:

如果空间受限,可以适当缩小到0.4λ(约5cm),但千万别超过0.5λ。我个人的安全边界是0.45λ~0.5λ。

4.3 天线切换机制:让信号「轮流发言」

天线阵列有了,但蓝牙芯片只有一个射频通道。怎么让多根天线共用同一个接收机?答案就是切换。

4.3.1 切换方式对比

方式 原理 优点 缺点
机械开关 继电器切换 隔离度高 速度慢,有噪声
射频开关 PIN二极管/CMOS开关 速度快,体积小 插损约0.5~1dB
相控阵 移相器+合成器 无切换延迟 成本高,功耗大

BLE 5.0定位场景下,我建议用射频开关。原因很简单:便宜、够用、好买。

4.3.2 切换时序要求

BLE 5.0的AoA/AoD方案里,有一个关键参数叫「切换时间」。标准规定:

  • 每个天线驻留时间:至少1μs
  • 切换间隔:≤ 1μs
  • 总采样窗口:8μs(对应8个IQ样本)

嗯,这里要注意:切换时间不是越快越好。开关切换会产生瞬态毛刺,如果采样点刚好落在毛刺上,IQ数据就废了。

我的经验值:

实际项目中,我会在切换后等待0.5μs再开始采样。这样虽然损失了一点时间,但数据质量提升明显。

4.3.3 硬件实现示例

以4元线阵为例,典型的切换电路如下:

// 伪代码:天线切换控制
void antenna_switch(uint8_t ant_id) {
    // ant_id: 0~3 对应天线1~4
    // 先关闭所有天线
    GPIO_WriteLow(PIN_ANT_EN);
    delay_us(0.2);  // 等待开关完全关断
    
    // 选择目标天线
    switch(ant_id) {
        case 0: GPIO_SetBits(PIN_ANT0); break;
        case 1: GPIO_SetBits(PIN_ANT1); break;
        case 2: GPIO_SetBits(PIN_ANT2); break;
        case 3: GPIO_SetBits(PIN_ANT3); break;
    }
    
    // 等待开关稳定
    delay_us(0.5);
    
    // 使能天线
    GPIO_WriteHigh(PIN_ANT_EN);
    
    // 等待信号稳定后开始采样
    delay_us(0.5);
}

这段代码看起来简单,但我在实际调试时发现:不同厂家的射频开关,稳定时间差异很大。有的0.3μs就稳了,有的要1μs。所以建议拿到芯片后先测一下开关响应曲线。

4.4 阵列校准:被很多人忽略的一步

天线阵列装好后,不是直接就能用的。每个天线都有微小的相位和幅度偏差,必须校准。

我曾经在一个项目中,阵列校准没做好,测角误差直接飙到±15度。后来用矢量网络分析仪逐天线校准,误差降到±2度以内。

快速校准方法:

  1. 在远场放置一个已知位置的信号源
  2. 依次切换每个天线,记录IQ数据
  3. 以天线1为参考,计算其他天线的相位差和幅度比
  4. 将这些补偿值写入固件

说白了,校准就是给每个天线「配一副眼镜」,让它们看东西的角度一致。

4.5 小结:我的设计清单

每次做天线阵列设计,我都会过一遍这个清单:

  • ☐ 确定定位维度:一维用线阵,二维用圆阵
  • ☐ 计算阵元间距:2.4GHz下取6.25cm
  • ☐ 选择射频开关:关注切换时间和插损
  • ☐ 设计切换时序:留足稳定时间
  • ☐ 做阵列校准:别偷懒

天线阵列设计,说难不难,说简单也不简单。关键是把每个细节都做到位。你想想看,信号在空中飞了十几米,最后在几厘米的天线上决定方向,这本身就是一件很精妙的事。