该部分主要介绍在 SDR 接收机之前的一些硬件测试,关于 SDR 接收机的测试见于二元干涉仪 SDR 接收机测试,干涉仪仿真部分见于二元干涉仪仿真,射电望远镜整体链路见于 射电望远镜整体链路对观测影响的分析
将按照器件连接的顺序依次对器件的测试结果进行分析,对于两个一样的器件而言,是为了对比两个器件对高频信号的幅度和相位响应是否一致; 对于单个的器件,仅仅是为了查看其对高频信号的幅度和相位响应的特性。
待补充
# 观测设备
室内连接设备如下图所示,两个八木天线各连上宽带低噪放,然后接到合路器上,经过带通滤波器输出到 RTL-SDR 接收机。地上蓝色的为供电电池,两捆粗的黑线为长度 8m 的同轴线,另外一捆细的黑线为 USB 扩展槽线。
实际连接设备如下图,由于需要将天线拉开,在低噪放和合路器中间加上了长度为 8m 的同轴线,电池被绑在支架上给低噪放供电。
# 矢网
目前使用的 200 元购入的 NanoVNA 矢网,最大的测量频率为 1.5GHz,计划在 1425GHz 附近观测,因此只测量各器件在 1.3GHz-1.5GHz 的性能。把 NanoVNA 连接到电脑,使用 NanoVNA-Saver 软件扫描、导出各参数,然后利用 python 进行分析。
值得一提的是,我手中的矢网(性能得看制作者)定标后的短时间内的测量结果是可靠的,然而随着时间的推移,结果会发生小幅度的漂移,例如下图:
在 17:31 之前完成了定标,然后在 17:31 到 17:57 测量了矢网发射端口(0 端口)和接收端口(1 端口)直连的 S21 参数;同时也在重启矢网后,仍然采用 17:31 左右的那次定标,在 19:00 测量了直连的 S21 参数;可见会有所漂移,所以想精确测量器件,应当尽快测量。
尝试在三个时间段上测量 1.42GHz 的滤波器,结果如下图:
用在 17:34、18:10、19:02 对滤波器测量的 S21 参数(复数形式)分别除以 在 17:31、17:57、19:00 直连的 S21 参数,尝试手动定标消除时间漂移的影响如下图
相位上看起来是有所改善,然而幅度上仍然是不太行,因此暂时只能尽快进行测量来避免该问题。
# 天线
对八木天线进行测量,得到结果如下图:
以 - 10dB 为标准,则八木天线在 1.37GHz-1.5+GHz 上工作良好
天线馈电点引出了约 1.2m 长度的同轴线,这是 S11 的相位变化的主要来源;从矢网发出的信号经过 1.2m 的长度到天线馈电点,由于阻抗不匹配被部分反射回来,折返经过 1.2m 的长度返回矢网,总计 2.4m 的长度。从图中也可看出从 1.3114GHz 到 1.3907GHz(总计 0.0793GHz 的带宽)上,相位从 180° 变化到 - 180°(总计 360° 的变化,即)。
利用群时延公式,有,即矢网的信号从发出到返回总共花费了 12.61ns,同轴线中的光速为,因而可以估出信号走过的长度为,接近 1.2m*2 这个长度。
# 低噪放
分别把两个相同型号的低噪放命名为低噪放 1 和低噪放 2
该矢网一般用来测量无源器件,接收功率不宜过大,不然有可能烧坏矢网或者无法正常显示,因此测量低噪放时可以串联一个衰减器,在此串联一个 30dB 的衰减器(具体演示见于用 NanoVNA 测量放大器增益),低噪放 1 的测量结果如下:
测量低噪放 1 时距离矢网的初次定标已经经过了 40 分钟左右,测量结果已经略有不准,从衰减器、低噪放 1 和衰减器串联的增益曲线的波浪形也可以看出(本来应该接近一条直线)。
(低噪放 1 和衰减器串联的增益 dB)减去 (衰减器的增益 dB)即可得到低噪放 1 实际的增益。实际上是用(低噪放 1 和衰减器串联的 S21 复数)除以 (衰减器的 S21 复数)得到(低噪放 1 的 S21 复数),从而得到低噪放 1 的增益(复数的幅度)和相位(复数的相位)。
用对低噪放 2 也用上述的方法进行测量,结果如下图所示:
可见两者的 S21 参数基本一致,较大的波动来源于衰减器的不良测量结果。
# 同轴线
分别把两个标称 8m 长度的同轴线命名为同轴线 1 和同轴线 2,测量结果如下图:
两者的 S21 参数基本一致,可看出从 1.3114GHz 到 1.3408GHz(总计 0.0294GHz 的带宽)上,相位从 180° 变化到 - 180°(总计 360° 的变化,即)。利用群时延公式,有,即矢网的信号从发出到返回总共花费了 34.014ns,同轴线中的光速为,因而可以估出信号走过的长度为,接近 8m 长度。
# 合路器
由于 2 路功分损坏(没有外壳,射频端口断掉了),暂时使用 4 路功分作为合路器,如下图所示:
把 4 个分路端口依次命名为 1、2、3、4 端口,合路端口命名为 0 端口,测量各分路端口到 0 端口的传输系数如图所示(未被测量的端口均处于开路状态):
可见使用该合路器在 1.42GHz 的插损高达 - 8.5dB,从 1.30GHz 到 1.50GHz 的相位变化约为 87.5°,可估出信号走过的时间约为 1.2ns,走过的等效长度约为 0.18m(RF-4 板材上的光速约为真空中光速的一半)。
测量 2 端口和其他端口的耦合如下图(未被测量的端口均处于开路状态):
一般情况下,功分器 / 合路器都是按照所有分路都工作情况下设计的,4 个分路需要同时激励来观测总的传输系数,或者尝试得到这个功分器 / 合路器的 S 参数矩阵(4 个分路 + 1 和合路,5*5 的矩阵)。目前仅有 2、3 端口被使用,1、4 端口开路,所以难以做出实际工作状态的详细判定,不过有一点可以确定,信号经过 2、3 端口的插损、相位变化肯定基本上是接近的。
# 滤波器
滤波器测量结果如下图:
在 1.35GHz 到 1.48GHz 上,滤波器的插损小于 5dB,较为平坦。
可以看出滤波器在不同频带上的群时延可能不同, 不过由于主要工作在 1.35GHz 和 1.48GHz 上,因此我们只需要估计工作频带内的群时延。在 1.35GHz 到 1.45GHz 上,相位由 50° 变化到 - 180°,因此 ,即矢网的信号从发射端口到接收端口总共花费了 6.39ns,同轴线中的光速为,因而可以估出信号走过的长度为(假设等效到 RF-4 板材上,RF-4 板材上的光速约为真空中光速中的一半),即滤波器等效长度为 0.9585m。
# snp 文件的绘图示例代码
scikit-rf(又名 skrf)是一个开源的、BSD 许可的软件包,用于用 Python 编程语言实现的射频 / 微波工程。它为网络分析和校准提供了一个现代的、面向对象的库,该库既灵活又可扩展。请参阅下面的一些功能,并查看文档以更深入地了解 scikit-rf。
Tutorials — scikit-rf Documentation
import skrf as rf | |
import matplotlib.pyplot as plt | |
import numpy as np | |
plt.rcParams['font.sans-serif'] = ['SimHei'] | |
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号 '-' 显示为方块的问题 | |
# 加载 .s2p 文件 | |
S_LNA_1 = rf.Network(r"C:\Users\BI6MHT\Desktop\干涉实验\nanovna\port2_低噪放1_加电.s2p") # 替换为你的 .s2p 文件路径 | |
S_Att = rf.Network(r"C:\Users\BI6MHT\Desktop\干涉实验\nanovna\port2_衰减器.s2p") # 替换为你的 .s2p 文件路径 | |
# 消除衰减器的影响 | |
S = S_LNA_1/S_Att | |
# 直接绘图 | |
# S.plot_s_db(m=1,n=0) | |
freq = S.f/1e9 | |
# S 参数数值换算 | |
# [:,1,0] 中的 1 和 0 代表 2 和 1,即 S21 | |
S21 = 20*np.log10(abs(S.s[:,1,0])) | |
S21_deg = np.rad2deg(np.angle(S.s[:,1,0])) | |
S21_LNA_1 = 20*np.log10(abs(S_LNA_1.s[:,1,0])) | |
S21_deg_LNA_1 = np.rad2deg(np.angle(S_LNA_1.s[:,1,0])) | |
S21_Att = 20*np.log10(abs(S_Att.s[:,1,0])) | |
S21_deg_Att = np.rad2deg(np.angle(S_Att.s[:,1,0])) | |
# 开始画图,设置图片大小 | |
plt.figure(1, figsize=(10,5)) | |
# S | |
plt.subplot(1,2,1) | |
plt.plot(freq, S21, label='低噪放1增益', color='blue', linewidth=2.5) | |
plt.plot(freq, S21_LNA_1, label='低噪放1和衰减器串联的增益', color='red', linewidth=2.5) | |
plt.plot(freq, S21_Att, label='衰减器增益', color='k', linewidth=2.5) | |
plt.grid() | |
plt.title('S21参数幅度'); plt.xlabel('频率 (GHz)'); plt.ylabel('增益(dB)'); plt.legend(loc='upper center') | |
plt.ylim([-40,40]) | |
# S21_deg | |
plt.subplot(1,2,2) | |
plt.plot(freq, S21_deg, label='低噪放1相位', color='blue', linewidth=2.5) | |
plt.plot(freq, S21_deg_LNA_1, label='低噪放1和衰减器串联的相位', color='red', linewidth=2.5) | |
plt.plot(freq, S21_deg_Att, label='衰减器相位', color='k', linewidth=2.5) | |
plt.grid() | |
plt.title('S21参数相位'); plt.xlabel('频率 (GHz)'); plt.ylabel('相位(°)'); plt.legend() | |
plt.ylim([-50,90]) | |
plt.show() |