在这篇文章中,我们将添加一些 Python 代码来实现相移。然后我们将实际看到数组模式!最后!
数字移相
为了将我们的设置转换为适当的相控阵,我们需要对接收到的信号进行相移。这将补偿一个天线元件相对于另一个天线元件接收的延迟。幸运的是,对冥王星的接收数据应用相移(Δφ)非常容易 - 您只需乘以-jΔφ的复指数即可。所以Python代码是:
delayed_Rx_1 = Rx_1 * np.exp(1j*np.deg2rad(phase_delay))
其中phase_delay以度为单位
这些代码的大部分与我们之前博客中经历的“Hello World”代码非常相似。但是有两个新功能:“calcTheta”和“dbfs”。“calcTheta”函数只是返回给定相移的转向角(Ɵ)。我们在上一篇博客中看到了这些方程式。“dbfs”函数相对于冥王星的满量程范围缩放接收到的数据。它与dBm不同 - dBm相对于1 mW功率的dB。相反,dBFS是相对于接收器满量程的dB。在这种情况下,它是冥王星ADC的满量程 - 即12位。
最后,这个新的Python程序的重大变化是在Rx_1数据上实现相移。但是做一个相移并查看单个数据点并不是很有趣。因此,让我们扫描从-180°到+ 180°的所有可能的相移。我们可以超越这一点,但阶段只会重新包装到自身,所以它不会给我们更多独特的数据。
最终设置
但在单击该运行按钮之前,让我们确保我们的设置正确。
首先,让我们将TX1天线移动到Ɵ = 0°位置。这是机械视线位置。并将d设置为波长的一半左右。在我的程序中,我使用 2.3 GHz,因此我将 RX1 和 RX2 天线设置为 d=65 mm。
绘制光束
有了这个,我们可以点击运行!您将看到的是我们应用于RX2的相移函数幅度图。它看起来像这样:
程序将记录峰值的位置,并将该相移转换为相应的转向角。在这种情况下,峰值处于116°的相移处,对应于Ɵ = 40°的方向。但是我们将发射天线定位为 Ɵ = 0°!!这到底是怎么回事呢?问题是相位校准 - 这在波束成形系统中非常重要。
校准
在我们的两个接收通道之间,存在各种相位(和增益!)不匹配。例如,将天线连接到滤波器的 SMA 电缆的长度不完全相同。即使它们是,它们结构的微小差异也会使它们的电气长度不同。因此,您可以从两根电缆获得不同的相移,在2.3 GHz。您可以购买相位匹配的电缆,但它们非常昂贵!即使你这样做了,滤波器和模拟前端也存在其他不匹配。
幸运的是,对于双元素数组,校准非常简单。我们只需将发射器对准机械视线,然后将阵列移位,直到接收模式在发射器物理位置达到峰值(即 0°)。未校准的峰值现在为Δφ=116°,因此我们只需要将其添加到我们应用的每个相位延迟中即可。在“phase_cal”变量中输入您的值(可能不会是 116°)。这样做现在应该可以得到这个:
现在我们看到一个不错的图案,以0°为中心。如果你在自己的实验室里做这件事(我真的希望你是 - 这就是这个博客的重点!),然后移动发射器并注意情节是如何变化的。您将看到峰值(由垂直红色虚线表示)移动到发射器所在的位置。在每种情况下,您都可以看到振幅在发射器所在的位置附近基本持平,然后随着相移的增加而滚落。您可以在上面列出的YouTube链接中看到此操作的视频。这种相移应该在通电和时间推移中保持得很好。所以你可能不需要每次启动冥王星时都这样做。
到达方向
在上面的图中,这条红色垂直线给出了传输信号的“到达方向”(DOA)。我们将在以后的博客中对波束成形器做其他事情。但是现在,让我们专注于将其用作DOA测量工具。对于DOA来说,我们必须做指南针图是一个悠久的传统。事实上,它已经在我上面链接的示例代码文件中。只需设置“Plot_Compass = True”,您会看到如下所示的内容:
这条蓝线将指向发射器的确切位置。
结论
我们终于做到了!我们构建了一个非常简单的数字波束成型器
审核编辑“郭婷
-
接收器
+关注
关注
14文章
2459浏览量
71808 -
python
+关注
关注
56文章
4783浏览量
84475
发布评论请先 登录
相关推荐
评论