smithチャートを描く

ee9king に投稿

会社の業務だから詳細は書けないんだけど、ある種のRF関連の要素でアンテナの特性を調べるには、VNA(Vector Network Analyzer)は欠かせないと思う。ネットアナ、ネアナとかって言いますよね。

回路屋にとっての三種の神器といえば、オシロ、スペアナ、ネットアナ。と言われるぐらいのものだけど、最近の周囲の回路屋はオシロだけでスペアナすら使ったことがない人が多いね。使い方も知らない。もっともオシロにFFT機能があったりして使ってますという人もいるが、あれで、何がわかるんだ?、オシロの時間軸波形から周波数ドメインでの表示ができるから、信号に含まれるノイズは見つけることができるが、それはノイズの原因になっているかもしれないが、そのものじゃない。つまりそれが放射(輻射)されるわけじゃない。

話を元に戻し、アンテナ特性を見るのにVNAでS11とSWR、それにsmithを表示させて、画面コピーやcsv保管してデータ取りは普通するわな。エクセルでsパラからsmith書かせることはできるけど、チャートにはならない。

smithチャート、後から描けたら便利だろうなー、なんて。そういうのってPythonやMATLABの得意分野じゃないのかってことで、調べたら、少しヒットした。でも情報は著しく少ないですね。

MATLAB

RF Tool Boxを購入すると可能なようです。個人ユースで5000円。うーむ、ないな。ここ数年は会社でものを購入するときはものすごくバイタリティが必要で、安く済むなら全部自費でごまかしている。おかしな会社だ。

Python

情報が少ないものの、scikit-rfというライブラリを使えば可能なようだ。

https://scikit-rf.readthedocs.io/en/latest/index.html

以降これを使った、チャートについて書いておく。今回の目的はsmithチャートを描きたいということだったが、scikit-rfを使えばTouchstoneファイルを読み込んで一発で描けるということだ。

インストール

Anacondaを前提に書く。EnvironmentのNot Installedの中にscikit-rfは存在する。しかし、ここでチェックしてUpdateしても失敗するというか、終わらない。公式ページのインストール方法に従い、Terminalを立ちあげ、下記を行うことで成功する。

conda install -c conda-forge  scikit-rf

このあたりが、Pythonが嫌いな理由だろう。便利なんだが、いちいちいろいろ苦労する。Python3.7でやると、一部のライブラリがダウングレードされる。

smithチャートを描く

touchstoneファイルを用意する。

import numpy as np
from matplotlib import pyplot as plt
import skrf as rf

ntwk1 = rf.Network('test.s1p');

ntwk1.plot_s_smith();

scikitの中でmaplotlibを使うようである。軸等の設定はmatplotlibのplotの引数が使える。描画結果

軸にラベルをつけたい

plot_s_smithの引数で指定できるようだ。

Network.plot_s_smith(m=None, n=None, r=1, ax=None, show_legend=True, chart_type='z', draw_labels=False, label_axes=False, draw_vswr=None, *args, **kwargs)

plot_s_smith(draw_labels=True,show_legend=True,label='sminof-test')

show_legend=Falseにすると、凡例が完全になくなる。matplotlibだと小さい四角が出ている。

ここまできたら、周波数を絞ってほしい周波数近辺だけ表示させたいと思うよねー、ちょっとまだできてない。s11やSWRの表示の時はxlimを使うとplot領域を変えることができるのだが、smithだとそもそも周波数軸がありませんよねー。どうするんだろ?

データも、Networkというデータセットになっているようで、Spyderの変数には出てこない。いったん、np行列にしてスライスして戻してあげればできるのかしら?

 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。