Pythonでマイクロストリップパッチアンテナの設計ツールを作る(5) これまでをまとめてクラス化・モジュール化した。パッチサイズ、入力インピーダンス、指向性、効率、利得が計算できる。使い方まとめ。
これまでやってきたことを全部まとめてクラス化した。コードは後で説明するとして、まずは使い方から。
クラス名はPatchAntennaで、それをpatchantenna.pyというファイルに記載している。なのでまずそのファイルをパスの通ったところにいれて
import patchantenna as pa
とでもしてインポートする。
①初期化
初期化は
ant = pa.PatchAntenna(2.2, 1.588, 10)
のようにインスタンス化する。ここでtanδとσを省略するとデフォルト値が入る。
この時同時にパッチ幅W、パッチ長さLが設計されて内部に保持される。
②パッチ寸法読み・書き
propertyのwidthとlengthを使う。設計値以外のものを使う場合は代入も可能。
import numpy as np
from scipy.integrate import quad
from scipy.special import sici, j0
from scipy.integrate import dblquad
class PatchAntenna:
"""
矩形マイクロストリップパッチアンテナ設計クラス
Parameters
----------
er : 基板の比誘電率
h : 基板の厚み[mm]
f0 : 共振周波数[GHz]
tanD : 基板誘電体のtanδ
(省略すると0.01)
sigma : パッチ導体の導電率[S/m]
(省略すると5.8E7)
"""
def __init__(self, er, h, f0, tanD = 0.01, sigma = 5.8E7):
self.er = er
self.h = h * 1.0E-3
self.f0 = f0 * 1.0E9
self.u0 = 4.0 * np.pi * 1.E-7
self.e0 = 8.85418782E-12
self.tanD = tanD
self.sigma = sigma
self.lambda0 = 1 /(self.f0 * np.sqrt(self.e0 * self.u0))
#パッチ幅
self.W = (1.0 / (2 * self.f0 * np.sqrt(self.e0 * self.u0))) * np.sqrt(2.0 / (self.er + 1.0))
#有効比誘電率ereff
self.ereff = (self.er + 1.0) / 2.0 + ((self.er - 1.0) / 2.0) / np.sqrt(1.0 + 12.0 * self.h / self.W)
#フリンジングΔL
self.dL = self.h * 0.412 * (self.ereff + 0.3) * (self.W / self.h + 0.264) / ((self.ereff - 0.258) * (self.W / self.h + 0.8))
#基板内波長
self.wave_length = 1 /(self.f0 * np.sqrt(self.ereff * self.e0 * self.u0))
#パッチ長さ
self.L = self.wave_length / 2 - 2 * self.dL
@property
def width(self):
"""
パッチ幅を読み書きするプロパティ
"""
return self.W * 1000
@width.setter
def width(self, W):
self.W = W * 1.0E-3
@property
def length(self):
"""
パッチ長さを読み書きするプロパティ
"""
return self.L * 1000
@length.setter
def length(self, L):
self.L = L * 1.0E-3
def input_impedance(self, offset = 0):
"""
矩形マイクロストリップパッチアンテナの入力インピーダンスを計算する。
Parameters
----------
offset : パッチ端からの給電位置[mm]
Returns
-------
入力インピーダンス[Ω]
"""
k0=2.0 * np.pi / self.lambda0
X = k0 * self.W
siX, _ = sici(X)
I1 = -2 + np.cos(X) + X * siX + np.sin(X)/X
G1 = I1 / (120 * np.pi**2)
def f(t, X, Y):
return ((np.sin(X*np.cos(t) / 2.0) / np.cos(t))**2) * j0(Y * np.sin(t)) * np.sin(t)**3
I2, _ = quad(f, 0, np.pi, args = (X, k0*self.L))
G12 = I2 / (120* np.pi **2)
Rin = 1 / (2 * (G1 + G12))
return Rin * np.cos(np.pi * offset * 1.0E-3 / self.L) ** 2
def directivity(self):
"""
矩形マイクロストリップパッチアンテナの指向性(Directivity)を計算する。
Returns
-------
指向性[dB]
"""
k0 = 2.0 * np.pi / self.lambda0
X = k0 * self.W
def f(theta, phi, X, Y):
return (np.sin(X*np.cos(theta)/2) / np.cos(theta)) **2 * (np.sin(theta) **3) * (np.cos(Y*np.sin(theta)*np.sin(phi)/2)) ** 2
I2, _ = dblquad(f, 0, np.pi, 0, np.pi, args=(X, k0 * self.wave_length /2))
self.D2 = (2* np.pi * self.W / self.lambda0) **2 * (np.pi / I2)
return 10 * np.log10(self.D2)
def efficiency(self):
"""
矩形マイクロストリップパッチアンテナの効率(efficiency)を計算する。
Returns
-------
アンテナ効率[dB]
"""
#放射Qの近似式
if self.er > 2:
self.Qr = 3 * self.er * self.lambda0 / (8 * self.h)
else:
self.Qr = (np.pi * np.pi * np.sqrt(self.er) / (4 * np.pi * np.pi - 16 * np.sqrt(self.er))) * (self.lambda0 / self.h)
#導体Q
ds = np.sqrt(2 / (2 * np.pi * self.f0 * self.u0 * self.sigma))
self.Qc = self.h / ds
#誘電体Q
self.Qd = 1 / self.tanD
#無負荷Q
self.Qt = 1 / (1 / self.Qc + 1 / self.Qd + 1 / self.Qr)
self.eta = self.Qt / self.Qr
return 10 * np.log10(self.eta)
def gain(self):
"""
矩形マイクロストリップパッチアンテナのアンテナ利得(Gain)を計算する。
Returns
-------
アンテナ利得[dB]
"""
D2 = self.directivity()
eta = self.efficiency()
return D2 + eta
def draw(self):
"""
矩形マイクロストリップアンテナの寸法説明
"""
print(" ←------ W --------→ ")
print(" ↑ ┌────────────────────┐")
print(" | │ │")
print(" | │ │")
print(" │ │")
print(" L │ │")
print(" │ │")
print(" | │ 〇 │")
print(" | │ | │")
print(" | │ | offset │")
print(" ↓ └────────────────────┘")
print(" Thickness: h")
|
« 高周波・RFニュース 2024年11月4日 IEEE Antennas and Propagation Magazineでアンテナ技術の進化とアレイのレビュー、EMC EuropeでAIをDe-embeddingに応用、I-PEXがシールド付き細線同軸コネクタ発表、iPhone 17からApple製Wi-Fiチップ?Huaweiの5G-Aᴬ | トップページ | 映画「八犬伝」を観てきた。物語の八犬伝と、それを書いた馬琴と北斎との交流が突然切り替わる面白い構成。切り替わるたびに話が進むので馬琴たちが老いていくのも。昔NHKの人形劇で観てたので玉が懐かしかった。しかし板垣李光人くんどう見ても女性にしか見えない… »
「パソコン・インターネット」カテゴリの記事
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
- MATLAB OnlineのSimulinkでローレンツ方程式をode8で計算してみる。Interface 2025年1月号でMATLAB Onlineの半年ライセンスがついてきたので。Simulinkを使うのは初めてだったが、わかりやすいSimulink入門コースを修了したのですぐできた。(2024.12.04)
- Interface2025年1月号はMATLABで1ニューロンから手作り 数学&図解でディープ・ラーニング。初歩からAlexNetの転移学習、CNNまで話題が豊富で、なんとMatlab Onlineの半年ライセンスがついてくる。Simulinkや各種toolboxも使える。早速MATLAB入門オンラインコース修了した。(2024.12.03)
「学問・資格」カテゴリの記事
- 高周波・RFニュース2024年12月9日 iFixitがDJI Neo分解、TechInsightsがApple Pencil Pro分解、QualcommのNeurIPS 2024でのAI技術発表、IntelのIEDM 2024での発表、 Nokiaの7GHz帯の6G、Analog DevicesのPhased Array Antennaのホワイトペーパー、ZDTが史上二番目の売上高(2024.12.09)
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース2024年12月9日 iFixitがDJI Neo分解、TechInsightsがApple Pencil Pro分解、QualcommのNeurIPS 2024でのAI技術発表、IntelのIEDM 2024での発表、 Nokiaの7GHz帯の6G、Analog DevicesのPhased Array Antennaのホワイトペーパー、ZDTが史上二番目の売上高(2024.12.09)
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
« 高周波・RFニュース 2024年11月4日 IEEE Antennas and Propagation Magazineでアンテナ技術の進化とアレイのレビュー、EMC EuropeでAIをDe-embeddingに応用、I-PEXがシールド付き細線同軸コネクタ発表、iPhone 17からApple製Wi-Fiチップ?Huaweiの5G-Aᴬ | トップページ | 映画「八犬伝」を観てきた。物語の八犬伝と、それを書いた馬琴と北斎との交流が突然切り替わる面白い構成。切り替わるたびに話が進むので馬琴たちが老いていくのも。昔NHKの人形劇で観てたので玉が懐かしかった。しかし板垣李光人くんどう見ても女性にしか見えない… »
コメント