[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です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です