用Python實現喇叭天線設計小工具(二)

2021-01-14 老貓電磁館
摘要:本文主要介紹軟體安裝、參考論文,以及第一個模塊——參數計算模塊。準備工作

在開始之前,請確保裝了以下軟體或資源(括號中是我個人推薦版本或配置,若安裝有困難,請自行搜索相關教程):


Home - Anacondawww.anaconda.com


Electromagnetic Simulation Products | ANSYSwww.ansys.com


https://www.jetbrains.com/pycharm/www.jetbrains.com




理論部分


本文理論部分比較簡單直觀,只需要簡單提一下。首先,參考論文連結如下:

https://pan.baidu.com/s/1iggiF1ijjnuG3pBdDFrp8Qpan.baidu.com



文章發表於2002年IEEE Antenna's and Propagation Magazine,收錄於Antenna Designer's Notebooks欄目(順便提一句,該欄目我一直很喜歡,經常介紹一些偏實際工程使用的文章,內容也很靠譜)。文章主要介紹了給定E面和H面的波束寬度,如何設計角錐喇叭,使得在滿足該波束寬度要求的前提下,最大化天線的方向性係數(或增益)。


文中並沒有羅列大量理論公式,因為這部分早已研究透徹,而是選用了一種為廣大工程師喜聞樂見的方法:參數擬合,並給出了詳盡的參數列表,從而得到了快速、方便的查表式設計公式,並給出了一些實際算例來證明理論的可靠性。


理論部分大體就是這樣,當然,有興趣的同志可以認真看一下論文和參考文獻,大部分理論公式均可於Balanis那本「天線聖經」中找到更為詳細的推導(參見原書第13.2章節),此處不再贅述。


編寫參數計算模塊

從最簡單的模塊入手,首先編寫參數計算模塊,該模塊要實現參考文獻的內容,即給出設計參數,返回喇叭天線的尺寸,從程序角度來看,其輸入和輸出如下:


輸入:設計頻點f0,E面波束寬度HPE,H面波束寬度HPE,波導寬邊a,波導窄邊b。

輸出:喇叭寬邊A,喇叭窄邊B,喇叭長L。


顯然,對於這種輸入輸出很單一的功能,寫一個函數來實現是最為合適的,也方便後續為其他模塊所調用。


代碼如下:

import math

#constant
t0, s0, a0, a1, a2 = 0.375, 0.25, 0.2974, 7.0401, -37.5383
c00,c01,c10, c11, c12, c13, c14, c15 = 44.8365, 4.3374, -8.1501, -2.9183, 8.4217, -13.2623, 10.6702, -3.4713
ah, bh, ch, dh, eh, fh, gh, hh, ih = 0.3534, -5.9711, -1.5379, 13.4735, 2.4359, -13.3102, -1.6386, 4.7981, 0.6333
ae, be, ce, de, ee, fe, ge, he = 0.1962, -11.3448, -1.9135, 4.78, 5.7284, -47.9711, -4.8935, -6.4175
d0, d1, d2, d3, d4, d5, d6, d7, d8 = \
0.1020, 2.9658e-2, -2.4894e-3, -2.0962e-2, 6.3028e-4, -5.9327e-6, -0.6802, -4.4039e-2, 1.0213e-3
f00, f01, f10, f11, f12, f13, f14, f15 = 44.3672, -4.098, -8.0775, -4.2683, 14.5647, -26.1244, 23.9791, -8.7301


def calc(freq, HPE, HPH, a, b):
lam = 300 / freq
k = HPH / HPE

if k < 1:
t = t0
c0 = c00 + c01*math.log(k)
c1 = c10 + c11*k + c12*k**2 + c13*k**3 + c14*k**4 + c15*k**5
D = c0 + c1 * math.log(HPH)
s = (a0 + a1 / k**2 + a2 / D) ** (-1)

A = 0.5 * math.sqrt(
(ah + ch*t**2 + eh*t**4 + gh*t**6 + ih*t**8) / (1 + bh*t**2 + dh*t**4 + fh*t**6 + hh*t**8)) * \
lam * math.cos(HPH*math.pi/720) / math.tan(HPH*math.pi/720)

B = 0.5 * math.sqrt(
(ae + ce*s**2 + ee*s**4 + ge*s**6) / (1 + be*s**2 + de*s**4 + fe*s**6 + he*s**8)) * \
lam * math.cos(HPE*math.pi/720) / math.tan(HPE*math.pi/720)

R = A * (A - a) / (8 * lam * t)

else:
s = s0
f0 = f00 + f01 * math.log(k)
f1 = f10 + f11 / k + f12 / k**2 + f13 / k**3 + f14 / k**4 + f15 / k**5
D = f0 + f1 * math.log(HPE)
t = (d0 + d1*k + d2*k**2 + d3*D + d4*D**2 + d5*D**3) / (1 + d6*k + d7*D + d8*D**2)

A = 0.5 * math.sqrt(
(ah + ch * t ** 2 + eh * t ** 4 + gh * t ** 6 + ih * t ** 8) / (
1 + bh * t ** 2 + dh * t ** 4 + fh * t ** 6 + hh * t ** 8)) * \
lam * math.cos(HPH * math.pi / 360) / math.tan(HPH * math.pi / 720)

B = 0.5 * math.sqrt(
(ae + ce * s ** 2 + ee * s ** 4 + ge * s ** 6) / (
1 + be * s ** 2 + de * s ** 4 + fe * s ** 6 + he * s ** 8)) * \
lam * math.cos(HPE * math.pi / 360) / math.tan(HPE * math.pi / 720)

R = A * (B - b) / (8 * lam * s)

return round(A, 2), round(B, 2), round(R, 2)


if __name__ == '__main__':
_A, _B, _R = calc(freq=10, HPE=30, HPH=20, a=47.55, b=22.15)
print(_A, _B, _R)


結尾部分做簡單的測試,並和論文中的算例結果比較(Table7.a),以證明代碼無誤。


這個過程幾乎是將論文的參數和公式直接「翻譯」到程序裡,沒有太多可講的,但針對對於Python語法不太熟悉的讀者,我提煉出了以下幾點幫助理解:

Python對每一行前面的空格有嚴格要求,不可為了好看隨意增減,否則出錯;

和Matlab一樣,Python對於變量無需先定義再使用,如先int a、float b等,而是直接使用即可,因而代碼會比大部分語言更「自然」一些;

與Matlab不同的是,Python並非專門針對科學計算和工程計算而設計,故基本運算只有四則(+-\)、平方(*)等,複雜點的數學符號,如log、sin、cos等,則依賴於其他包(module),故而在代碼開頭要寫一句import math,並在中間調用時使用math.xxx格式,需要說明的是,如果將開頭一句改為:from math import *,則可不必使用math.xxx而直接輸入運算符xxx,但編程教科書說最好別這樣。

用round(A,2)輸出小數點後兩位格式。

代碼最後的if __name__ == '__main__': 部分比較有Python特色,其作用可簡單理解為供測試使用。因本部分代碼是為了被其他模塊調用,這句話的意思就是說被調用時不執行後面內容,因此冒號後面可以方便、隨意地寫調試代碼,而不用擔心影響調用它的程序;

與Matlab相比不便的地方是,Python並不會保存並顯示中間變量,調試起來諸多不便,辦法一是用print語句將變量「列印」出來;方法二是在IDE中設置斷點,如下圖所示(以pycharm舉例):

小結

到此為止,核心功能其實已經完成,但為了把工作做得更漂亮,還需要做很多工作。本篇介紹即到此結束,下一部分將會講到波導查值模塊和主調用模塊,謝謝各位觀看(*^_^*)!


轉載自:知乎@況澤靈,發布於 2018-11-20

相關焦點

  • 手把手教你製作喇叭天線-圖文教程
    (1) 喇叭天線簡介喇叭天線簡介常見的喇叭天線主要由角錐喇叭(矩形喇叭)和圓錐喇叭,分別如圖1.1、1.2 所示:圖1.1 角錐喇叭實物圖喇叭就是一個漸變的波導,它增大了輻射口徑,可以獲得較高的增益,而且製作簡單,性能穩定,即便在較惡劣的環境中也能獲得較好的方向圖,下面我們就自己動手設計一個角錐喇叭天線,設計中將要用到兩個軟體:HDL_ANT 和CST(或HFSS),分別用於設計和仿真。
  • 手把手教你製作喇叭天線-圖文超詳細教程
    喇叭就是一個漸變的波導,它增大了輻射口徑,可以獲得較高的增益,而且製作簡單,性能穩定,即便在較惡劣的環境中也能獲得較好的方向圖,下面我們就自己動手設計一個角錐喇叭天線,設計中將要用到兩個軟體:HDL_ANT 和CST(或HFSS),分別用於設計和仿真。
  • 了解天線設計和匹配網絡
    odgednc圖1給出了一些常見的天線設計。我們最熟悉的是單極天線——它曾經是電視廣播接收、第一代行動電話甚至玩具的主流天線。一些模擬和無線領域的老工程師可能還認識八木天線——直到20世紀90年代末,它一直裝在我們的屋頂上。出於經濟和機械原因,當今的無線電子設備中最常見的天線是微帶貼片天線。然而,在筆者看來,最容易解釋的天線是喇叭天線。
  • 高效率LTE小蜂窩基站天線設計方案
    本文引用地址:http://www.eepw.com.cn/article/259683.htm本文討論的小蜂窩基站天線設計使用了方向性片狀輻射器,並有兩個做了垂直和水平極化的饋電埠
  • 令人讚嘆的8個Python新手工具!
    其中scikit-learn是最有名的,是開源的,任何人都可以免費地使用這個庫或者進行二次開發。它是一個非常強大的工具,能為庫的開發提供高水平的支持和嚴格的管理。它也得到了很多第三方工具的支持,有豐富的功能適用於各種用例。scikit-learn主要有六大基本功能,分別是分類、回歸、聚類、數據將維、模型選擇和數據預處理。
  • 衛星便攜站天線自動對星系統的設計與實現
    摘要:針對衛星便攜站窄波束天線找星難度大、對星耗時多、對星精度差的問題,設計並實現了一個附加在實裝設備上的自動對星工具,以PIC單片機為核心,通過採集和處理GPS數據、方位俯仰傳感器數據和衛星信號強度數據,控制高精度步進電機自動調整便攜站天線方位角和俯仰角,從而實現快速、自動、精確對星。
  • 雙極變張角時域天線設計
    考察幾種常見的超寬帶天線可發現,一些傳統的超寬帶天線形式並不能輻射時域脈衝波形,只有領結天線、單極天線、雙錐天線和TEM喇叭天線等形式可輻射時域波形。 空間技術的發展對天線共形提出更高的要求。英國宇航公司研製高性能小尺寸的光導開關,試驗中光導天線系統產生了30 MW的高功率微波。
  • 介質環境對標籤天線的影響分析及紙基RFID標籤天線設計實現
    目前探討周圍介質對天線影響的研究主要應用於雷達天線罩設計,涉及到軍事技術,故國內外公開的文獻較少。本文著重探討 RFID 標籤周圍環境對標籤天線阻抗特性的影響,提出了一種對包裝箱內物品不敏感的通用 RFID 標籤天線設計方法,無需為特定產品訂製專用的 RFID 標籤。
  • 天線實現多頻的方法和RFID雙頻微帶天線仿真與設計
    天線實現多頻的方法和RFID雙頻微帶天線仿真與設計 工程師曾玲 發表於 2018-06-29 09:17:00 1.
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    話說在金融和IT行當混跡了多年,python一直是被我隨手拿來當個小工具用用,有時候偷懶用python弄個excel自動化整理工具,有時候拿來上各種網站爬蟲搜集點信息,有時候也會拿來寫點量化小工具。那麼到底什麼是python?
  • 有關收音機磁性天線和電路的小知識
    有關收音機磁性天線和電路的小知識,一起來了解一下吧!一、收音機的磁性天線有什麼作用?用磁性天線可以代替超外差收音機的天線線圈。由於磁性天線中磁棒的導磁率大,因而繞在磁棒上面的線圈可以獲得比較多的電磁波能量,一般可以不用另接天線。
  • Python入門小迷宮,走完這個迷宮,就能掌握python編程基礎
    其實,這是一個用python做的迷宮小遊戲,非常簡單,但對於python初學者來說,還是有一定的挑戰性,但TONOW有源碼和教程,只要跟著python迷宮小遊戲的教程和相應的源碼,不僅很容易就能自己開發出這個遊戲,還能在這個過程中,掌握python編程的基礎哦!
  • 常用的十大 python 圖像處理工具
    它實現了用於研究,教育和工業應用的算法和實用工具。即使是那些剛接觸Python生態系統的人,它也是一個相當簡單直接的庫。此代碼是由活躍的志願者社區編寫的,具有高質量和同行評審的性質。該包目前包括線性和非線性濾波,二值形態學,B樣條插值和對象測量等功能函數。
  • 通信衛星天線技術的新發展
    最關鍵的設計特點是:在一副天線上提供發射和接收功能,由於採用寬帶操作,禁止使用頻率 敏感部件,混合部件也要避免並應儘量採用極好的 匹配單元以防止來自波束成形網絡的較差頻率響應,。同時,較高的發射功率電平也要求仔細 設計、組裝和試驗,以消除無源交調產物, 這無論在接收信號中還是在二次以上諧波中都是如此。
  • 一日一技:用Python程序求解二次方程式
    用Python程序求解二次方程式 當我們已給出係數a,b和c時,用python程序計算二次方程的根值。 另外,說明一下,下面的示例,需要你有一定的python基礎,不然對於新手來說,會難以理解。 因此,這篇文章,適合於有一定python學習基礎的小夥伴。
  • Ansoft軟體在天線電磁兼容中的應用實例
    分 析和設計、電磁兼容性分析、射頻電路設計、目標特性計算和隱身材料和技術研究等。本文將對北航Ansoft培訓中心在使用 Ansoft軟體解決天線、電磁兼容和射頻韋伯等領域的工程問題的實例進行介紹。一. 天線問題 Ansoft 軟體可用於天線分析和設計問題的工具是HFSS和Ensemble。
  • 一種2.4GHz阻抗匹配的傳輸線電小天線設計
    可是,天線是被認為無線傳輸系統中最大的組成部分,以致縮小天線尺寸成為迫切需要[2]。已經有很多關於為了減小電小天線尺寸, 使其遠小於一個波長的尺寸這方面的研究[3]。然而眾所周知,為了實現這種小型化的天線,同時我們必須設計一種寬帶的阻抗匹配電路,來彌補這種窄帶寬,小 天線所特有的低輻射電導率特性。
  • 從零開始寫Python爬蟲,四大工具你值得擁有!
    那麼,學習python爬蟲之前需要哪些準備?一顆熱愛學習,不屈不撓的心一臺有鍵盤的電腦(什麼系統都行。我用的os x,所以例子會以這個為準)html相關的一些知識。不需要精通,能懂一點就行Python的基礎語法知識 。
  • PLA輕量級3D列印天線原型
    雖然大多數3D列印天線都是用金屬製成的,但土耳其Yasar大學最近卻用PLA材料製作出了3D列印錐形波紋喇叭天線,用於在直播衛星(DBS)系統中饋送反射器天線。研究人員在他們發表的論文中討論了FDM 3D列印原型天線的設計、生產和驗證過程。
  • 《小灰教你零基礎學python》-Python入門語言
    電腦(包括手機)由硬體和程序構成:很多硬體 + 很多程序 = 電腦具體硬體和程序如何集成這個咱們不用太了解,這個是計算機設計原理裡面的東西了,咱只需要了解,電腦就是硬體(攝像頭、二、什麼是程式語言程序(軟體)是使用程式語言編寫的,比如咱們日常使用的微信、qq、瀏覽器、播放器都是使用程式語言編寫的,程式語言有哪些:javapython