2012/06/28

FCDとRTLSDRの周波数補正

FunCube DongleやRTLSDRはどちらもチューナーにE4000を使っていて、癖が似ている。

どちらも初期状態だと430M帯で数k~数十kHzずれてしまい、衛星の信号を探すのはとても骨が折れる。
 Funcubeで受かるはずの衛星をSDR-Radioで逃しっぱなしなので調べることに。

具体的にはお借りした高級SGでそのズレを調査してみた。 

RTL編
RTL-SDR(RTL2832U+E4000)での周波数設定の範囲を調べたところ、59.6MHz~2200MHzまで設定できた。

ただし300MHzと1200MHz付近は合わせようとするとPLLが外れる。この周波数をまたいでスイープしようとするとPLLが外れてしまう。
 外れてしまったら、リセットしないといけない。ソフトを再起動するか、ドングルを一度取り外す必要がある。


SGで基準信号を出しながら調べる。受信側はGNURadio

改造したRTL2832U+E4000の素の状態で、この個体は100M帯で約-1Hz、430M帯で-6kHz、2G帯で-40kHz程度のエラーがあった。綺麗に傾きが出ている。 

 ACARS(131.25)で補正しても430帯でずれてたのはこのせいか・・・

FunCube Dongle pro編

 FunCubeはSGに対して標準のFCHID+Spectravueで調べた。こちらでは上記グラフのような周波数エラーをFrequency Correctionという数字のボックスで補正できる。

初期値のままだとどんどんズレていって500MHzあたりで48kHz以上外へ抜けてしまうので、傾きを減らすとちょうど良い感じになった。 

公式によると、http://www.funcubedongle.com/?p=617
最近のFCD(v1.1版)であれば、FCHIDのFreq Corrのデフォルト値が 999,885/1,000,000 (-115ppm)だった場合は、999,988/1,000,000 (-12ppm)に設定すると良いとある。 
 
 こちらのFCDもv1.1だったので、-12ppmにするとだいぶズレが小さくなった。

 個体値を追い込むと-6ppmあたりがちょうど良さげだ。

 QtHIDなら最初からppm表示なので、こちらを使うと簡単だ。

修正した結果、中心周波数から最大1kHzの幅で収まるように調整できた。(あくまで個体値です)
SDR Radioでも同様の補正を行った。


qthidの設定


測定するまで、このズレは中心周波数のノイズを避けるためのオフセットなのかと勘違いしていた。

A/Dコンバータの解像度と信号強度
SGの信号出力を試しに上下に振ってみたけれど、やはりFunCubeのほうが信号強度のダイナミックレンジが広い。 RTL2832Uと比べると20dB以上小さい信号も受信できていた。 

実際の衛星などの信号でも補正が妥当かどうか検証してみたい。手持ちアンテナだとFunCubeで決まりかなあ。