OSQZSS

オープンソース準天頂衛星(QZSS)受信機

MAX2769 for BeiDou

2013-05-29 23:06:50 | ソフトウェア受信機
MAX2769の設定についてご質問がありましたので,こちらに追加情報.

2011/02/19で紹介している設定はゼロIFの2ビットI/Q信号にしていますが,
RFワールドNo. 13の記事のように,I信号のみの設定も可能です.

しかし,なぜかMAX2769のデータシートには,バンドパスフィルタの
中心周波数について説明がなく,レジスタ値の計算方法が判りません.

デフォルト値で4MHzということだけは判っていますので,この値に
近くなるよう,IF信号の周波数を選ぶことにします.

BeiDouの搬送波周波数である1561.098MHzは,1.023MHzの1526倍となっています.
そこで,まずRDIVを16とすることで,16.386/16=1.023MHzの基準信号を生成します.
さらに,NDIVを1522に設定すると,1.023*1522=1557.006MHzがLOとして得られます.
これにより,IF信号の周波数は,1561.098 - 1557.006 = 4.092MHzとなります.

同様に,NDIVを1536とすると,1575.42MHzのGPS信号でも同じIF信号が得られます.
しかし,GPS信号のチップレートが1.023Mcpsであるのに対して,BeiDouはその2倍の
2.046Mcpsです.そのため,バンドパスフィルタの帯域に4MHzを選びます.

サンプリング周波数は16.368MHzです.

これらを考慮すると,BeiDou信号受信のためのMAX2769のレジスタ設定は,
以下のようになります.

0000: 1000 0010 1001 0011 1001 1011 0011 = 0x82939B3
0001: 0000 0101 0101 0000 0000 1000 1100 = 0x055008C
0010: 1110 1010 1111 1111 0001 1101 1100 = 0xEAFF1DC
0011: 1001 1110 1100 0000 0000 0000 1000 = 0x9EC0008
0100: 0000 1011 1110 0100 0000 1000 0000 = 0x0BC4080
0101: 1000 0000 0000 0000 0000 0111 0000 = 0x8000070
0110: 1000 0000 0000 0000 0000 0000 0000 = 0x8000000
0111: 0001 0000 0000 0110 0001 1011 0010 = 0x10061B2
1000: 0001 1110 0000 1111 0100 0000 0001 = 0x1E0F401
1001: 0001 0100 1100 0000 0100 0000 0010 = 0x14C0402

GPS信号の場合は,以下の2つのレジスタ値が異なるだけです.
Galileを受信するのであれば,バンドパスフィルタの帯域は4MHzのままにしてください.

0000: 1000 0010 1001 0011 1001 1010 0011 = 0x82939A3
0100: 0000 1100 0000 0000 0000 1000 0000 = 0x0C00080

残りの問題は,BeiDou対応のアンテナをどこで入手するかですね…
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTL-SDRのTCXO換装

2013-05-28 18:10:47 | RTL-SDR
RTL2382U+R820Tがまだ到着していないので,ただの妄想日記.

本体の価格が10ドル程度ということもあり,実装されている
水晶振動子の精度が悪いとレポートされています.

100ppmは問題外として,水晶振動子では30ppm程度が現実的.
それでもGPS信号の補足からすると,周波数誤差が大きすぎます.

信号補足で探索しなければならない周波数の不確定性は,
主に衛星の運動によるドップラと受信機クロックの周波数誤差です.

地上から見た衛星の運動は,視線方向の相対速度で最大でも600m/sなので,
波長が0.19mのGPS信号では,約3kHzのドップラが生じます.

一方,1575.42MHzの搬送波周波数にとって,受信機クロックの周波数誤差は,
1ppmで約1.5kHzのオフセットとなります.

信号補足では,この周波数の不確定性を,500Hz刻み程度で探索するため,
単純に周波数誤差が増加すれば,信号補足に時間がかかることになります.

視線方向の相対速度は衛星の運動が支配的ですので,信号探索の時間を
決めるのは,受信機クロックの周波数誤差となります.

やはりここは数ppmのTCXOを搭載したい!

残念ながら,RTL2382Uに使われているクロックは28.8MHzという特殊な
周波数で,標準品としては入手できそうにありません.

水晶発振子を特注されている方もいらっしゃいましたが,
TCXOとなると単品の発注は難しく,小ロットでも10万円以上はかかりそうです…

ところが,その半分の周波数である14.4MHzは標準的なTCXOとして
Digikeyで購入できます.しかも0.5ppmの安定度!

Digikey: ASVTX-09-14.400MHZ-T

これを2逓倍すれば良いのですが,このあたりは知識なし.
普通にPLLで良いのかな?

Digikey: ICS502MILF

しかし,クロック出力がCMOSになるし,どう処理したら良いのだろう?

いずれにせよ,これで28.8MHzはつくれそうですので,実機が到着したら試してみましょう.
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTL-SDRの開発環境

2013-05-22 22:27:16 | RTL-SDR
RTL2382U+R820Tのチューナがまだ届かないので,
とりあえずRTL-SDRの開発環境を整えてみました.

開発ツールは,GNSS-SDRLIBへの実装を見越して
Visual Studio Express 2012 for Windows Desktopです.

まず,RTL-SDRのページからpre-built Windows versionを
ダウンロードします.

RTL-SDR: pre-built Windows version

この中には,RTL-SDRのライブラリとDLL,ヘッダファイル,
そしてlibusb-1.0とpthreadのDLLが入っています.

さらに,rtl_test.exeやrtl_sdr.exeといったアプリも
入っていますが,今回はこれらをリビルドしてみます.

まず,ライブラリなどをどこか判りやすいフォルダへコピーします.
ここでは,C:\rtlsdrにコピーしました.

次に,RTL-SDRのソースを入手します.Gitを使ってソースファイルを
すべてダウンロードしても良いのですが,今回はサンプルツールの
リビルドだけですので,リポジトリから必要なファイルだけコピーします.

git: rtl-sdr/tree/src/

サンプルツールのソースとして,rtl_sdr.cを選びました.
また,Windowsでビルドする場合には,getoptフォルダの
getopt.cとgetopt.hも必要になります.

これで材料はそろいました.次は,Visual Studio Express 2012で,
New ProjectからWin32 Console Applicationを作成します.

 (クリックで拡大)

このとき,Applicaton SettingsのAdditional Optionsで,
Precompiled headerではなく,Empty projectにチェックを
入れてください.

 (クリックで拡大)

新しく生成されたプロジェクトフォルダに,rtl_sdr.cとgetopt
フォルダをコピーします.



さらに,ソースファイルをSolution Explorerに追加します.



次に,RTL-SDRのライブラリを使うために,必要なフォルダへの
パスをDEBUGのPropertiesから指定します.



まず,C:\rtlsdrへコピーしたヘッダファイルへのパスを指定します.

 (クリックで拡大)

次に,ライブラリへのパスを指定します.Visual Studio Express 2012は,
デフォルトでx32アプリをビルドしますので,C:\rtlsdr\x32を指定します.

 (クリックで拡大)

さらに,LinkerのAdditional Dependenciesにrtlsdr.libを追加します.

 (クリックで拡大)

これでビルドの準備が整いました.しかし,ダウンロードしたソースを
そのままビルドすると,次のようなエラーが発生します.



そこで,エラーメッセージの指示通りに,rlt_sdr.cとgetopt.cの先頭に,
_CRT_SECURE_NO_WARNINGSを書き加えます.



これでエラーも警告もなく,rtl_sdr.exeがビルドできるようになりました.

最後に,rtl_sdr.exeを実効するためにはrtlsdr.dllが必要になりますので,
環境変数のPATHに,DLLをコピーしたC:\rtlsdr\x32を加えておきます.



このアプリケーションは,チューナから出力されるIF信号のサンプルを
ファイルに保存します.ファイルに保存する代わりに,GNSS-SDRLIBの
入力信号とすれば,リアルタイムのソフトウェアGPS受信機として動作するはず!

チューナの到着が待ち遠しいです.

【追記】フラットデザインが流行なのだろうけど,新しいVisual Studioの
インターフェイスはヌルっとしていて使いづらい.テキストなのかボタン
なのかタブなのか,みんな同じに見える.

どうしても気に入らない点は,Output windowのエラーや警告メッセージが
テキストとして部分的にコピーできないこと.エラーや警告なんて,ネットで
調べないと何だか判らないものが多い.コピーできないなら全部手入力.
これだけでもなんとかならないかな…

【追記2】リファレンスを見る限り,エラーは一覧でしかコピーできないようだ.
エラー一覧をExcelのスプレッドシートに張り付けたりなんてしたことないよ…

Visual Studio 2012: [エラー一覧]ウィンドウ

【追記3】IntelliSenseが大量のエラーメッセージを出していることに気付く.
それでもビルドは通るから,無視していいのか?どれもgetopt関連のエラーで
GNSS-SDRLIBへの実装には影響ないので,とりあえずスルー.
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

はじめてのGNSS-SDRLIB

2013-05-14 22:29:20 | ソフトウェア受信機
残念ながらGN3S v2はGNSS-SDRLIBに接続できなかったので,
マニュアルに従って,IFファイルの読み込みを試してみました.

サンプルのIFファイルとして,test/data/IF_GN3S.binが付属しています.

まず,gnss-sdrgui.exeを起動して,Input TypeにFileを選択します.
そして,FrontEnd1にサンプルのファイル名を選びます.

サンプルファイルは,2ビットのI samplingで,サンプリング
周波数は16.368MHz,中間周波数は4.092MHzになります.
これらのパラメータをSettingのFrontEnd1に入力します.

Outputとしては,まずRINEXを選んでみました.適当な出力フォルダを
選ぶと,そこにephemerisとobservationのRINEXファイルが出力されます.

衛星は全部選んでも良いのですが,計算時間を節約するために
test/data/skyplot_20130510_0827(UT).jpgで観測されている衛星のみを選びました.



これでStartボタンをクリックすると,信号補足と追尾が開始されます.
その左のMボタンをクリックすると,処理の状況がモニタできます.



無事にRINEXファイルが生成されたので,RTKLIBのRTKPOSTを利用して後処理してみました.
ばらつきもRMSで2m程度と,なかなかの測位精度が得られています.





次に,疑似的なリアルタイム処理として,GNSS-SDRLIBから出力された観測値を,
RTCMフォーマットでRTKNAVIに入力してみます.

RINEXとの違いは,Outputの設定でRTCM MSMを選択するだけです.
RTKNAVIの設定は,マニュアル通り.

ちょっと面倒なのが,PCの時刻をIFファイルが取得された近辺の時刻に
設定し直さないといけないことでしょうか.日本標準時はUTCから9時間進んで
いますので,2013年5月10日の17:27:00に設定します.



これで準備が整いましたので,RTKNAVIとGNSS-SDRLIBをスタートさせます.
しばらくすると,信号補足が完了し,観測データとエフェメリスがRTKNAVに出力されます.



ひとつリクエスト.

gnss-sdrgui.exeを起動するたびに,設定を入力し直さないといけないのは不便なので,
前回の設定を覚えていてくれると嬉しいです.または,設定がSave/Loadできるとか.
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GNSS-SDRLIBの公開

2013-05-13 16:32:46 | ソフトウェア受信機
楽しみにしていたGNSS-SDRLIBのベータ版が公開されました.

Taro +memo:GNSS-SDRLIB

公式なサポートではないみたいだけど,GN3S v2が手元にあるので,
とりあえず試してみます.

RTL-SDRともインターフェイスを取りたい.
RTL2832U+R820Tのチューナ待ちです.

【追記】チューナが届く前に予習.

RTL2832U+R820Tは,これまでのRTL2832U+E4000の代わりとして
人気があるようだ.E4000では1100MHzから1250MHzにギャップが
あったようだが,R820Tでは24MHZから1766MHzまで受信できるらしい.
つまり,E4000では受信できなかったGPS L2やL5の信号もR820Tでは
受信できることになる.

しかし,サンプリング周波数は最大で3.2MHz.データ落ちなく
連続して取得するためには,2.4MHz程度が限度らしい.zero IFの
I/Qサンプリングなので,帯域はサンプリング周波数と同程度.
GPS L1/CAやL2Cは受信できるが,L5は無理.帯域が4MHzの
GalileoやBeidouも難しいかも.FDMAのGLONASSは除外.

発振器の精度や安定性も低いのは仕方がない.
それでも$20以下で充分楽しめそうなデバイスだ.

【追記2】GN3S v2とv3は,ハードウェアからして違っていた…

GNSS@CCAR, CU Boulder: Front End Hardware Module

v2はTCXOの周波数が微妙に異なり,IFも8MHzでのI/Qサンプリングに固定.
GNSS-SDRLIBの勉強がてら,v2のサポートを加えてみよう.
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sonnet Liteで解析

2013-05-12 15:56:47 | ロケット
終日稼働中の実験機器を見守る傍ら,sonnet liteでwraparound antennaの解析を進める.

昨日,勢い余って購入したアンテナ入門の本は,付属CDにsonnet liteのインストーラが
入っているだけでした.各章で紹介されているプロジェクトも入っているものだと期待して
いたのに残念.正直,説明されていないことが多くて,同じ結果を出すのに一苦労.

特にパッチアンテナの解析では,Boxの設定でBottom MetalをLosslessに設定しなければ
ならないことにしばらく気づかず,はまってました.

それでもなんとか,それっぽい結果が出たような出ないような?





リターンロスはGPSの周波数あたりで小さくなっているけれど,電流分布が期待して
いたものとやけに違う.基本的にパッチアンテナなので,radiatorの上下端面で電流が
ゼロになり,半波長方向の中心部で最大になるような帯状になるのでは?

メッシュサイズの関係で,Boxがやけに小さいのも問題かもしれない.
メモリサイズを削減するためにedge meshingもないし,subsectionsも粗い.

正解が判らないので,とりあえず単体のパッチアンテナを作ってみた.



こんな感じを期待しているのだけれど,違うのかな?

【追記】給電の方法が間違っている気がしたので修正.電流分布は帯状になった.
共振周波数がずいぶんと低いけど,メッシュサイズの関係で寸法の丸め誤差も
大きいので,こんなものかな?




コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GNSS-SDRLIB

2013-05-11 10:45:26 | ソフトウェア受信機
GNSS-SDRLIBの開発が着々と進んでいるようだ.
ベータ版が楽しみ.

Taro +memo:GNSS-SDRLIB

ユーザを広げるには,フロントエンドの価格がネックだと思う.
研究者だけでなく,ホビーユーザにも楽しんでもらいたい.

RTL-SDRでGPS信号の受信が報告されているので,
とりあえずチューナを購入して実験してみよう.

HACK A DAY:Those USB TV tuners used for SDR can also grab GPS data

需要があればMAX2769でGN3Sのクローンを作るよ!
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

マイクロストリップラインの計算

2013-05-11 08:49:14 | ロケット
PSASの記事を参考に,wraparound antennaを設計してみました.

アンテナは,一枚のradiatorとマッチングネットワークで構成されます.



radiatorの横幅は,ロケットの直径で決まります.
能代宇宙イベントなどで打ち上げられているハイブリッドロケットの
直径は12cmくらいのようでしたので,とりあえずこれで設計を進めます.

一方,radiatorの高さは,マイクロストリップラインの実効的な波長に依存します.
radiatorとground間の誘電率が高ければ,より小型のradiatorとなります.

GPS信号の波長は19cmですので,これでradiatorとマッチングネットワークの接点での
インピーダンスが求まります.feedの数を4本とすると,約120オームとなります.

このfeedを,マイクロストリップの1/4波長のラインを介して,100オームのラインに接続します.
このラインのインピーダンスは,sqrt(120×100)から約110オームと求まります.

100オームのマイクロストリップラインの中心をfeedとすると,その点のインピーダンスは,
50オームになります.これをまた1/4波長のラインで,次段の100オームのマイクロストリップ
ラインに接続します.このラインのインピーダンスは,sqrt(50×100)から約70オームとなります.

次に,これらマッチングネットワークのマイクロストリップラインの幅を計算します.
計算式は複雑ですが,AppCADなど便利なソフトウェアがいろいろあります.

一般的なPCB基板に使われるFR-4は,誘電率が1GHzで4.4になります.
銅箔の厚さを20ミクロン,誘電体の厚さを1.6mmとすると,radiatorと繋がる110オームの
マイクロストリップラインの幅は約0.5mmとなります.

また,この時のアンテナ全体の高さは,radiatorとマッチングネットワーク2段分を合わせて,
約9cmです.

一方,誘電率を10にしてみると,アンテナ全体の高さは6cmになり小型化されますが,
110オームのマイクロストリップラインの幅が0.12mmと,細くなりすぎてしまいます.

材料の入手性にもよりますが,製造における現実的な線幅を考えると,誘電率は4程度が
上限かと思います.

誘電体の材料をどこで入手できるのか調査しないといけませんが,プリント基板用の
プリプレグを硬化させないで巻きつければ良いのかな?

中尾貿易:高周波用プリント基板材料

フレキシブル基板は,プリント基板センターPBで,250×400mmまで対応してくれる.
ただし,価格は39,800円から.

ここまでくるとアンテナ解析ソフトでシミュレートしてみたいけど,どれも高価です.
無料のSonnet Liteで解析できる?

【追記】書店に出かけて参考書を購入.

オーム社:電磁界シミュレータで学ぶアンテナ入門



【追記2】見よう見まねでsonnet liteを試す.



radiatorのサイズと比較して,マイクロストリップラインが細いので,
必然的にメッシュが細かくなる.案の定,liteではメモリが足りない…
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ラップアラウンドアンテナ

2013-05-09 08:33:01 | ロケット
モデルロケット用のGPSアンテナに,wraparound antennaを
自作してみたいなと思い,勉強を始める.

アルミボディの上に,誘電体と銅箔さえあれば良い訳なので,
まずは材料探し.

銅箔部は,フレキシブル基板で製造して,巻きつけようと思う.
しかし,なかなか大きなフレキシブル基板を製造してくれる会社がない.
直径が10cmの円筒でも,30cm以上の長さが必要になる.

大型基板で検索してみたら,プリント電子研究所という会社が見つかった.
アンテナ用の片面フレキシブル基板が500×2000mmまでいける.

プリント電子研究所:片面フレキシブル配線板

アンテナを小型化するために,誘電体は高誘電率の材料が欲しい.
誘電率が10あれば,マイクロストリップラインの実効的な波長は
19cm/sqrt(10) = 6cmにできる.かつ,曲げられないと意味がない.

どんなキーワードで検索すれば良いのか判らずに苦労したけれど,
利昌工業の高周波機器用プリント配線基板材料を発見.
厚さは0.6mmなので,巻きつけられそう.

利昌工業:CS-3396

ところで,wraparoundって,Haigh-Farr社のトレードマークみたいですね.
Conformal microstripの方が一般的なのだろうか?

【追記】無骨なブレードアンテナにも惹かれる.

UB Corp:Blade Antennas
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTKLIB for NV08C

2013-05-02 07:34:22 | みちびき
NVS社のニュースにRTKLIBによるNV08Cのサポートが
大々的に取り上げられている.

RTKLIB Open Source GNSS Precise Positioning Software Package Now Supports NVS Technologies’ NV08C Receiver Series.

まるで公式ツールみたいだな.
それより,Storegisを何とかしてくれよ.

NV08Cのファームウェアもv0206にアップデートされたようだ.
後で試してみよう.

NV08C-CSM Firmware

【追記】備忘録.ファームウェアのアップデートには,
NVS社が提供するPatchWriterを使う.ポートを選んで
後はAutoで接続すれば,勝手にスキャンしてくれる.
デバイスが見つかったら,Programmingボタンを
クリックして書き込み.

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする