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 测量的是它在「参考面」——也就是校准所在的位置——看到的东西。要在连接被测物的那根线的末端校准,这样线本身的长度和损耗就从测量中扣除了。

  1. 设置扫频:单极天线用 100–170 MHz;环用 1–900 MHz。至少 201 个点。
  2. 依次把开路、短路、50 Ω 负载接到端口 1 线的末端,每一步保存。测 S21 时,「直通」一步把两根线直接接起来。
  3. 检查校准:接上负载时,整个扫频范围内 SWR 应接近 1.00。不是的话,重新校准。
  4. 保存校准,在记录里写下日期、扫频范围和室温。

第二步:参照单极天线

把一根 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,不论结果如何都如实报告。

参考文献

Eleshop. 2026. NanoVNA-H4 Vector Network Analyser: Specifications. https://eleshop.eu/nanovna-h4.html.
NanoVNA project. 2026. About NanoVNA. https://nanovna.com/.
WiMo. 2026. RTL-SDR V4 Receiver: Technical Data. https://www.wimo.com/en/rtl-sdr-v4.

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).