RTLSDR频率(ppm)校准笔记

2020-11-30  本文已影响0人  xun66

描述

在使用基于RTL2832U的SDR时,会发现频率有些误差。因为其内部使用的是普通晶振,难免会有些偏移。如果是WFM应用影响不大,NFM应用也还能接受,但是高频或带宽较小的通信影响就比较大了。记录一下校准频率的过程。

调研

频率误差主要包含晶振误差和频率偏差两部分。

晶振误差用ppm(每百万分之一)来表示,它表示我们设定的频率与实际Tune的频率的偏差。芯片当前温度是它的主要影响因素之一。其相关定义如下 (引用自Berkeley University eecs 网站)

当我们调谐到某个频率时,它实际上会调谐到一个偏移了的频率。 这个偏移量与中心频率成正比。因此,对于较高的频率,这个偏移量会很大。

至于频率偏差,其在多数文章中较少提及。它是指实际频率与设定中心频率的绝对偏差,与所设定的中心频率无关。这种误差原因不明,但有时会存在,不过数值一般不大。

举例

假设晶振误差是+10ppm,频率偏差是+70Hz。如果我们设定它的频率为100MHz,也就是100,000,000Hz,那么它实际Tune的频率为100M+ 100MHz*10Hz/MHz+70Hz=100,001,070Hz。 

理解了误差来源以后就知道这个误差是线性的,所以可以用一个线性函数来校正。恰好,SDR Sharp支持这两个参数,频率校正(ppm)在顶部播放按钮旁边的设置中,频率偏差在左边Radio面板中(设定带宽和调制方式的地方)。

粗略测试(可选)

RTLSDR库提供从2832SDR读写基本数据的功能,可以从命令行读写设备eeprom,测试设备,收听FM,解码ADSB,提供TCP sdr服务器等等。多数Linux发行版可以直接用apt等工具快捷安装,Windows可以从参考链接下载exe文件。

其中rtl_test工具提供了自动估算ppm误差的功能。只需运行rtl_test -p,等待几分钟待示数基本稳定之后即可得出结果。但根据实测,这个数据只能粗略反映ppm数值,还需进一步校准。

使用rtl_test自动计算ppm

精确测试

较为精确的校准需要至少两个已知频率的外部信号源,并且这两个信号自身频率应该较为准确,并且尽量间隔较大。最理想的情况当然是一个kHZ级别另一个GHz级别,但根据实际情况尽力即可。主流的方法有利用GSM,GPS,长波波段,HAM对讲机等。前几种方法的主要困难是GSM服务的频谱较宽,难以寻找中心;GPS/北斗等的频点难以匹配且接收信号较弱。另外,也有通过航空波段(118-135.975MHz)进行校准的。一般航空波段的地空对话都是整50kHz的频点,即1xx.x00/1xx.x50MHz,如121.95MHz,很少有121.955MHz的频率。而且其发射带宽也相对较窄,如有必要可以综合考虑使用。

这里使用HAM对讲机进行测试。因为业余电台的验机标准很严格,所以频率一般比较准,且容易控制。这里需要注意的是,在超过0.5W的非公用频段进行发射需要持有业余无线电操作证,否则为违法行为。所以本方适用于操作者已经具有持有业余电台和操作证的情况。如果不具备发射条件,需要进一步查找GSM/GPS等参考信号的资料。但根据评测,不同的GSM基站频率精度也参差不齐。

步骤

首先将对讲机调整为低发射功率,将SDR Sharp的AGC关闭,将增益调整为0(还是在顶部播放按钮旁边的设置中)。将对讲机调整到2m频段中某个频率(144-148MHz),比如144.575MHz,并将SDR充分预热。利用对讲机或SDR守听一段时间确认该频点空闲之后,按下对讲机发射按钮,注意对讲机不要离SDR天线太近。这时,在SDR这个频率附近应该可以找到对讲机的信号,利用缩放功能读出其在SDR上的频率,比如144.5683MHz。然后,再将对讲机调整到0.7m频段中某个频率(430-440MHz),比如431.625,然后在SDR上读出频率,比如431.6045MHz。

假设我们使用校准前的SDR收取到了对讲机的信号,那么SDR读取到的频率就是我们设定的调谐中心频率fc,对讲机上设定的频率是SDR的实际调谐频率fc'。现在我们有了两组数据,fc1=144568300,fc1'=144575000fc2=431604500,fc2'=431625000。

我们用一个直线方程描述误差作用过程:fc*k+b=fc',代入求解。根据定义,ppm=(k-1)*1x10^6。

144568300*k+b=144575000, 431604500*k+b=431625000

k=(431625000-144575000)/(431604500-144568300)=1.0000480776

b=431625000-431604500*k=-250.5085092

ppm=1000000*(k-1)=48.0776

shift=b=-250.5085092

将上面的两个参数取整,得到48和-250,即可填入SDR Sharp。

这里的ppm数值也适用于其他sdr应用,如rtl_fm命令的-p参数。


SDR Sharp 输入校准参数

总结

1. 使用GSM和GPS等方式可能稍微麻烦一些。文中使用对讲机的方法需要持有业余电台和业余无线电操作证。当然如有专业的设备自然更好 (但是估计也就不会看到这篇笔记了...)

2. 参考多个资料后总结。如更好的方法或文中有误,欢迎留言。

关键词

rtlsdr ppm 校准 对讲机 SDRSharp

参考链接

1. rtl_sdr项目主页(含Windows下载链接) - osmocom rtl-sdr 

2. Lab4: Calibration of the SDR frequency using GSM signals - berkeley eecs lab

3. ppm correction using Kalibrate and GSM service - acars-decoder

4. automatically calibrate ppm for rtl-sdr

上一篇下一篇

猜你喜欢

热点阅读