5D Library › 神圣肘尺与谐振几何 · English
第五章 开源硬件复现指南:用 NanoVNA 与 RTL-SDR 建立家庭射频测量台
第三、四章的测量方案,只有别人能够重复,才值得发表。二十年前,做这些测量所需的仪器要一辆汽车的价钱;今天,一台开源矢量网络分析仪加一台软件无线电接收器,总价不到一顿家庭聚餐。这一章说明怎样用它们搭建家庭射频(RF)测量台、怎样校准、怎样完成本书的测量,以及怎样发表结果,让别人能够核查。
需要什么
| 物品 | 用途 | 说明 |
|---|---|---|
| NanoVNA-H 或 NanoVNA-H4 | 测量反射(S11)与传输(S21),约 10–50 kHz 至 1.5 GHz | 附带开路、短路和 50 Ω 负载,用于校准 |
| RTL-SDR 接收器(例如 RTL-SDR Blog V4) | 接收约 0.5 MHz 至 1.77 GHz 的无线电信号;这里用来核对频率 | 配合 Windows、macOS、Linux 上的免费软件使用 |
| 两根短 SMA 线(20–30 厘米) | 连接分析仪与被测物 | 在线的末端校准,而不是在分析仪接口处 |
| 约 50 × 50 厘米铝板,中心装一个 SMA 插座 | 四分之一波长单极天线的地面 | 平整的裸金属烤盘也可以 |
| 两个直径 20 毫米的探测环 | 不接触地耦合到被测环 | 用细同轴线做:一圈,顶部断开屏蔽层 |
| 不导电的夹具(木头、亚克力或 3D 打印 PLA) | 把环和探测环固定在确定的距离上 | 环附近的金属夹会改变结果 |
| 万用表、卡尺或卷尺、温度计 | 检查通断、长度和室温 | 第三章的万用表测试决定环的拓扑 |
证据
NanoVNA 最初是日本工程师 edy555 的开源设计,频率范围 50 kHz 至 300 MHz;后来的硬件版本(NanoVNA-H rev3.4 及 NanoVNA-H4)可到 1.5 GHz,在频段顶端约有 40 dB 的动态范围。项目官网提醒:标称 2.7 GHz 的「NanoVNA plus」通常是仿冒品 (NanoVNA project 2026)。一家欧洲商店列出 NanoVNA-H4 的范围为 10 kHz 至 1.5 GHz,动态范围在 300 MHz 以下为 70 dB、900 MHz 以下为 60 dB、1.5 GHz 以下为 40 dB (Eleshop 2026)。RTL-SDR Blog V4 接收器用 R828D 调谐器与 RTL2832U 芯片、8 位模数转换器,覆盖 0.5 MHz 至 1.766 GHz,28.8 MHz 以下由内置上变频器接收,稳定带宽约 2.56 MHz (WiMo 2026)。
注
价格常变,仿冒品也多。请向注明硬件版本的卖家购买;在依赖仪器之前,对照项目自己的文档核对频率范围和动态范围。
第一步:校准
VNA 测量的是它在「参考面」——也就是校准所在的位置——看到的东西。要在连接被测物的那根线的末端校准,这样线本身的长度和损耗就从测量中扣除了。
- 设置扫频:单极天线用 100–170 MHz;环用 1–900 MHz。至少 201 个点。
- 依次把开路、短路、50 Ω 负载接到端口 1 线的末端,每一步保存。测 S21 时,「直通」一步把两根线直接接起来。
- 检查校准:接上负载时,整个扫频范围内 SWR 应接近 1.00。不是的话,重新校准。
- 保存校准,在记录里写下日期、扫频范围和室温。
第二步:参照单极天线
把一根 523.5 毫米的直导线垂直插在地面板中心的 SMA 插座上,远离墙壁和金属家具。接到端口 1,扫描 100–170 MHz,记下 SWR 最小值的频率和数值。把扫描结果导出为 Touchstone 文件(.s1p)。把导线拔下重插,再重复两次。
推导
Touchstone 文件是纯文本:一行以 #
开头的表头,然后每个频率一行,写着 S11
的实部和虚部。下面的程序用一个模型单极天线(在约 136 MHz 共振时为 36.5
Ω)生成一段模拟扫描来代替真实文件,读入后找出 SWR 最小值和 SWR 低于 2
的频带,并计算文件的 SHA-256 指纹,供发表使用。
import hashlib
import io
import numpy as np
# 1) 生成一段模拟扫描:四分之一波长单极天线的串联 RLC 模型,
# 约 136 MHz 共振时为 36.5 欧(代替真实的 NanoVNA 导出文件)。
f = np.linspace(100e6, 170e6, 141)
R, f0, Q = 36.5, 136e6, 8.0
X = R * Q * (f / f0 - f0 / f)
z = R + 1j * X
s11 = (z - 50) / (z + 50)
buf = io.StringIO()
buf.write("# Hz S RI R 50\n")
for fi, s in zip(f, s11):
buf.write(f"{fi:.0f} {s.real:.6f} {s.imag:.6f}\n")
text = buf.getvalue() # 真实文件:text = open("monopole.s1p").read()
# 2) 读 Touchstone .s1p 文件(Hz、S 参数、实部/虚部格式)
def read_s1p(text):
rows = [l.split() for l in text.splitlines() if l.strip() and l[0] not in "!#"]
data = np.array(rows, float)
return data[:, 0], data[:, 1] + 1j * data[:, 2]
freq, s = read_s1p(text)
swr = (1 + abs(s)) / (1 - abs(s))
i = np.argmin(swr)
band = freq[swr < 2]
print(f"minimum SWR {swr[i]:.2f} at {freq[i]/1e6:.1f} MHz; "
f"SWR < 2 from {band[0]/1e6:.1f} to {band[-1]/1e6:.1f} MHz")
print("sha256", hashlib.sha256(text.encode()).hexdigest()[:16], "...")
# minimum SWR 1.37 at 136.0 MHz; SWR < 2 from 130.0 to 142.0 MHz
# sha256 88dee9347b65844b ...对这个模型,最小 SWR 1.37 出现在 136.0 MHz,SWR 低于 2 的范围是 130 到 142 MHz,与第三章对物件 1 的预测一致。真实铝板上的真实导线会有些出入;测量的意义正在于找出差多少。
第三步:环与探测环
把两个探测环固定在夹具上,位于环将要放置之处的两侧、各距 20 毫米,探测环平面与环平面平行。一个接端口 1,一个接端口 2;在探测环就位、但没有放环的情况下校准 S21(此时「直通」就是空夹具)。扫描 1–900 MHz,保存为基线。然后依次把每个环放进夹具、扫描、保存。要看的量,是每个环相对于基线的 S21 变化(分贝)。
注
两次扫描之间,一切保持不动:线、走线、你的手和身体。在几百兆赫,离探测环 20 厘米的一只手都会改变结果。每次扫描时离开测量台,每项测量都把环取下再放回,重复三次。
第四步:用 RTL-SDR 核对频率刻度
VNA 的频率刻度来自内部晶振,可能偏差几十个 ppm(百万分之一)。RTL-SDR 接收器可以提供独立的核对。把它调到一个频率由法规固定的信号上,例如飞机应答机在 1090 MHz 的回复信号,或本地广播电台公布的载频,记下接收器显示信号的频率,算出接收器的误差(ppm)。然后让 NanoVNA 输出单一频率(CW 模式),设在单极天线共振附近,用校正过的 RTL-SDR 接收,进行比较。
推导
f_true = 1090.000e6 # Hz,飞机应答机回复频率
f_seen = 1090.025e6 # Hz,接收器显示的位置
ppm = (f_seen - f_true) / f_true * 1e6
print(f"receiver error {ppm:+.1f} ppm")
f_vna_set = 136.000e6 # NanoVNA CW 输出设置
f_vna_seen = 136.0061e6 # 接收器显示的频率
f_vna_true = f_vna_seen / (1 + ppm / 1e6)
print(f"VNA output {f_vna_true/1e6:.4f} MHz, error {(f_vna_true - f_vna_set)/f_vna_set*1e6:+.1f} ppm")
# receiver error +22.9 ppm
# VNA output 136.0030 MHz, error +21.9 ppm上面的数字只是算法示例,不是测量。20 ppm 的误差让 136 MHz 的共振移动不到 3 kHz,远小于共振本身的宽度,所以对本书来说,这一核对是确认仪器可靠,而不会改变结果。
第五步:做记录并发表
每次扫描都值得保留。每次扫描记一行,数据才能被别人使用:
| 栏目 | 例子 |
|---|---|
| 日期时间 | 2026-11-02 14:05 |
| 物件 | 3(双绞环,每肘尺 7 绞,1.6 毫米裸线) |
| 重复 | 第 2 次,共 3 次 |
| 扫频 | 1–900 MHz,401 点 |
| 校准文件 | cal_2026-11-02_s21.cal |
| 室温 | 26.5 °C |
| 数据文件 | obj3_rep2.s2p |
| SHA-256 | 文件哈希的前 16 位 |
| 备注 | 环重新安装;夹具未动 |
假说 · 尚未验证
作者邀请读者用自己的环和仪器重复第三、四章的测量方案,公开原始文件和记录(例如发布到 Zenodo,每个数据集都会得到自己的 DOI),并把 DOI 发给 5D Library。与预测相反的结果,和证实预测的结果一样受欢迎;两者都会在本书后续版本中列出,并注明贡献者。
安全与法规
注
- VNA 的输出非常微弱,RTL-SDR 只接收。正常使用时两者都没有危险。
- 接在 VNA 上的共振单极天线,确实会辐射出一点测试信号。扫描要短,并遵守所在国家的无线电发射规定;在大多数频率上有意发射需要执照。
- 在大多数国家接收无线电信号是合法的,但有些地方限制解码或使用某些通信的内容。这里只用接收器测量频率。
- 绝不要把仪器接到市电线路、雷雨中的天线,或任何带有发射机输出的设备上。
- 和全书一样:这些测量关心的是电路,不是身体。它们不作任何健康声明,也不能支持任何健康声明。
小结
- 一台 NanoVNA(约到 1.5 GHz)、一台 RTL-SDR 接收器(约到 1.77 GHz),加上线、地面板、探测环和不导电夹具,足以完成本书的每一项测量。
- 在线的末端校准,用 50 Ω 负载验证,每项测量重复三次。
- 把扫描导出为 Touchstone 文件;几行 Python 就能找出 SWR 最小值并给文件做指纹。
- 用 RTL-SDR 对照已知频率的信号核对频率刻度。
- 做记录,发表原始文件及其哈希和 DOI,不论结果如何都如实报告。
参考文献
Fan, Y. (2026). The Sacred Cubit and Resonant Geometry: Measuring the Egyptian Royal Cubit, the Quarter Wave and the Bifilar Ring [神圣肘尺与谐振几何] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23666560 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).