bookmark_border[598] COMET製NanoVNA?

アマチュア無線機器を扱う通販サイトで、ディスプレイに「COMET」のロゴマークが表示されたNanoVNA-Fが販売されているのを見掛けました。

メニュー表示が日本語になっていて、日本語のマニュアルも付くようです。保証期間は2ヶ月とあります。

コメットさんのHPでは見つけることができませんでしたので、試作ベースで日本語バージョンとしてカスタマイズし限定販売しているのでしょうか・・・。

なお、ファームウェアをアップデートすると、メニューは英語に戻るとのことです。

その日本語メニューですが、通販サイトに掲載された写真では「TOUCH CAL」が「タッチコール」に、「ABOUT US」が「アバウトアス」になっていました。前者はキャリブレーションの意味でしょうか。

ただ、保証がしっかり付いていますので、安心して購入できると思います。

 

bookmark_border[375] SD330 チューニング自動化のアルゴリズム

SD330は今の状況に満足してしまい、中々自動チューニングソフトのプログラミングは進みませんが、改めてアルゴリズムを考えてみました。

NanoVNAを利用することによりエレメントが動いている間もずっとSWRが確認できるメリットを生かし、アンテナになるべく負担をかけないようにするためにもエレメント伸長の距離や時間は最短にする動作にしたいと思います。

① PCにマニュアルで設定周波数「freq_new」を入力

② 直前の設定周波数「freq_old」と比較し、freq_newの方が高(低)ければエレメントを縮める(伸ばす)方向にリレーを制御

③ ②と同時にNanoVNAにfreq_newを設定しSWRの測定開始。これが2以下になった時点でリレーを停止し調整完了である旨を表示。freq_old = freq_newとしてデータを更新

④ 一定時間「T1」内にSWRが2以下にならない場合は、リレーを逆方向に制御

⑤ それでも一定時間「T2」内にSWRが2以下にならない場合はリレーを停止し、調整不能である旨をPC上に表示。その時点でエレメントが最長(または最短)になっているので、freq_oldは3.5MHz(または54MHz※)にリセット ※ショートエレメントの利用も考慮

⑥ ③または⑤の動作終了後にNanoVNAの動作を停止

なお「T1」「T2」ですが、T2はエレメント伸長のための最長時間に設定し、T1はT2をmaxとしてその中でfreq_newとfreq_oldの情報を使い最適値を設定する想定です。

引き続きPythonを学習しながら、GUI含めてコーディングしようと思います。

bookmark_border[361] NanoVNAからのSWR取得

NanoVNAから反射係数のデータを取得できることがわかりましたので、センター周波数とスパンをマニュアル入力し、反射係数からSWRを導き出す簡単なプログラムを組んでみました。

nanovna.pyをそのまま使わせていただき、コマンド入力処理部分はコメントアウトし無効化したうえで新たに下記のコードを追加して、初めに反射係数表示を試しました。

なお、最初は周波数セット後すぐにデータ取得しようとしましたが、前のデータが残っていたようでしたので、データ取得前に0.2秒の「待ち」を入れています。待ち時間を変えてみましたが、0.05秒では短かすぎ、0.1秒ではギリギリのようでした。

センター周波数に50.313MHz、スパンに1MHzを入力した結果は以下のとおりです。ちゃんと複素数表示されていますね。測定数はデフォルトの101に固定しています。アンテナはHFV5を使っています。

次に反射係数からSWRを求める式を入れました。

式はおなじみのSWR =(1+|反射係数|)/(1-|反射係数|)です。先ほどの反射係数表示のコマンドはコメントアウトし、SWR表示のコマンドを追加しています。

その結果は以下のとおりです。

実際に使いたいのは真ん中(50番目)の値ですので、それを取り出す式と表示コマンドを追加しました。Pythonでは順番は0から始まるとのことですので50番目は「49」を指定することになります。また小数点以下2桁まで表示するのにフォーマット関数を使っています。

その結果、この様にセンター周波数に対応したSWR値を得ることができました。

ちなみに下はNanoVNAを50Ωで終端したときのものです。当然ながらSWRはほぼ1ですね。

NanoVNAからのSWRの取得には結構遠回りして難航しましたが、ようやくここまでたどり着くことができました。PCによるリレー制御とSWR計算が実現しましたが、今後、更にSD330コントロールのアルゴリズムやGUIを考える必要があり道半ばという感じです。

またリレーとプッシュスイッチを格納するスイッチボックスの作成も必要です。
悩ましいのは、周波数情報をリグから取るかPCでマニュアル入力するかですが、リグ接続の場合JTDXとのバッティングをどの様に回避すれば良いかがわからないため、取り敢えずマニュアル入力で行こうと思います。

ちなみにSWRデータはリグからではなくNanoVNAから取りますので、高SWR状態でTX ONする必要がなくリグへの負担は無くなりますが、同軸切替が必要となりますのでその点は自動化が難しいですね。当局の場合は元々リグとNanoVNAの切替に同軸スイッチを使っており、接続はそのままでOKです。

bookmark_border[360] PCからのNanoVNA制御

一夜明けて改めてNanoVNAをPCに接続してみると、昨日の接続エラーが嘘のように消えていました。

原因は追究しないこととして、PCからダイレクトにNanoVNAにコマンドを送出する方法を試してみました。ネットで「NanoVNA commands」を検索するとコマンド表(PDF)が出てきます。

PCへのコマンド入力はnanovna.py経由でも良いのですが、NanoVNAからのレスポンスをPC上で表示する方法がわからなかったため、Tera Termを使ってターミナルモードにしてそこから打ち込みました。

これがTera Termを立ち上げてNanoVNAを接続したときの画面です。ちゃんと接続先のCOMポートが認識されています。

それではいよいよコマンド入力です。まず「help」を入力してみました。

ここではコマンド一覧が表示されます。これらのコマンドを使って、NanoVNAに対するターゲット周波数の設定とSWRデータを取得することになりますが、nanovna.pyのコード内容とPDFのコマンド表を見比べながら探っていきたいと思います。

なお、dataコマンドを使うとNanoVNAから反射係数の実数部と虚数部が出力されるようですので、それを元にPCでSWRを計算することができます。

ここまでで不明な点は、周波数範囲を指定して反射係数は取得できるものの、ピンポイントでターゲット周波数を指定しその周波数でのデータをどうやって取得するかです。ただ、周波数範囲をターゲット周波数±●MHzの範囲で指定すれば、SWR計算の際にはその中心のデータだけを使えば良いので、あまり悩まなくても良いのかも知れません。

ちなみにバージョンを見ると古そうですが、今の状態で特に不便を感じていませんのでファームアップは別の機会に行いたいと思います。

bookmark_border[359] NanoVNA USB接続エラー

最近は毎日のようにNanoVNAをいじっていますが、何とPCとのUSB接続がエラーになってしまいました。デバイスマネージャで見るとドライバが不調の様で、一旦ドライバを削除してPCを再起動してみましたがダメです。

NanoVNA用に専用のドライバをインストールした記憶が無いのでおそらくWindows標準のものと思いますが、エラーが消えません。当然のことながらCOMポートも表示されず、PCのアプリからも接続できない状態です。

他のPCで接続できるかどうかはまだ試していませんが、もしかするとnanovna.pyから色々とコマンドを打ち込んでいたため、NanoVNA側の設定がおかしくなってしまったのかも知れません。

ちなみに、nanovna.pyからは「-e」オプションを使うことでNanoVNAに対してダイレクトにコマンドを打ち込むことができそうで、コマンドもネットに情報が載っていたため試してみようと思った矢先にこの様な事態に陥りました。なおNanoVNA単体では特に問題無さそうです。

週末に落ち着いて対処しようと思いますが、QSLカードの印刷も予定しており週末は慌ただしく過ぎてしまいそうです。