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の人形劇で観てたので玉が懐かしかった。しかし板垣李光人くんどう見ても女性にしか見えない… »
「パソコン・インターネット」カテゴリの記事
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年12月16日 Microwave Journalの特集は軍事・ドローンを使ったESM等、SEMCOがCLLCコンバータ向けMLCC発表、SpaceXとSTM(フェイズドアレイアンテナのチップ開発)の協業10年、広帯域バランを使ったバランス測定解説(2025.12.16)
- RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/12/8-2025/12/14(2025.12.14)
- 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など(2025.12.13)
- 高周波・RFニュース 2025年12月12日 iFixitが水冷スマホRedMagic 11 Proを分解、Qorvoがロボット向けの技術を紹介、SamsungとKTが6Gに向けAI-RANを実証、NordicがnRF9151向けソフトと開発キット発表、Taoglasが6G向けアンテナ設計解説など(2025.12.12)
- 高周波・RFニュース 2025年12月11日 Qualcommが6Gに向けたOBBB法解説、GSMAが欧州のスペクトラム価格についての報告、Menlo Microが防衛向けに高スタンドオフ保護ミリ波スイッチ発表、京セラとローデ&シュワルツがCES2026でミリ波PAAMデモ、iFIxitのスマホアプリ(2025.12.11)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年12月16日 Microwave Journalの特集は軍事・ドローンを使ったESM等、SEMCOがCLLCコンバータ向けMLCC発表、SpaceXとSTM(フェイズドアレイアンテナのチップ開発)の協業10年、広帯域バランを使ったバランス測定解説(2025.12.16)
- RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/12/8-2025/12/14(2025.12.14)
- 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など(2025.12.13)
- 高周波・RFニュース 2025年12月12日 iFixitが水冷スマホRedMagic 11 Proを分解、Qorvoがロボット向けの技術を紹介、SamsungとKTが6Gに向けAI-RANを実証、NordicがnRF9151向けソフトと開発キット発表、Taoglasが6G向けアンテナ設計解説など(2025.12.12)
- 高周波・RFニュース 2025年12月11日 Qualcommが6Gに向けたOBBB法解説、GSMAが欧州のスペクトラム価格についての報告、Menlo Microが防衛向けに高スタンドオフ保護ミリ波スイッチ発表、京セラとローデ&シュワルツがCES2026でミリ波PAAMデモ、iFIxitのスマホアプリ(2025.12.11)
« 高周波・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の人形劇で観てたので玉が懐かしかった。しかし板垣李光人くんどう見ても女性にしか見えない… »




コメント