マイクロストリップ線路のインピーダンス
アンテナの話。
ヘリカルアンテナの製作で、VSWR=5とかいう電波が出ないアンテナを作ってしまった。しかたないので急遽テーパマッチングをすることになったのだけど、
誘電体の厚さ: b マイクロストリップ線路のインピーダンス: z
これがすでに固定で、
ストリップ線路の幅: a
を求めなきゃいけないことに、今日気づくってどうよ。
プログラム作ったけど、軽くあしらわれて悲しくなったのではっつける。(ところで、「はっつける」って方言かな?)
とりあえず、求めるプログラム
# # anntena.rb # # アンテナ実験用プログラム # # z impedance # a width # b distance # m margin def ms_impedance(a,b) #a_d = ((a + t) / (Math::PI * (Math.log(2*b/t) + 1))) #60 * Math.log((8*b/a_d) - 0.358 + 1 / (((0.931*b)/a_d) + 0.736)) 60 * Math.log(8*b/a - 0.358 + 1/(0.931*b/a + 0.736)) end # 二分検索でaを求める def search_a(z, b, m, upper, lower) upper = upper * 1.0 lower = lower * 1.0 mid = 0 loop do mid = (upper + lower)/2 sz = ms_impedance(mid,b) if (z.abs - sz.abs).abs < z*m break elsif (z.abs - sz.abs) > 0 upper = mid else lower = mid end end [mid, ms_impedance(mid,b)] end def search(zs, bs, m, upper, lower) zs.zip(bs).map do |p| search_a(p[0], p[1], m, upper, lower) end end
実行結果
irb(main):076:0> require 'pp' => true irb(main):078:0> pp search( (0..(150/5)).to_a.map{|i| i*5}.map {|i| 50.0*Math.exp(i * Math.log(130.0/50)/150.0)}, (0..(150/5)).to_a.map{|i| i*5}.map {|i| ((42-4)/150.0 * i + 4)/1000.0}, 0.00001, 1, 0) [[0.0203747749328613, 49.9999826113492], [0.0256376266479492, 51.6180687417226], [0.0303792953491211, 53.2881741650265], [0.0346260070800781, 55.0136245748933], [0.0384063720703125, 56.7937867873469], [0.0417451858520508, 58.6313848473834], [0.0446662902832031, 60.5289147549004], [0.0471935272216797, 62.4880156564918], [0.0493497848510742, 64.5104806457909], [0.0511569976806641, 66.5982559146418], [0.0526361465454102, 68.7534536200964], [0.0538063049316406, 70.9791508469187], [0.0546894073486328, 73.2755389172421], [0.0553016662597656, 75.646944593862], [0.0556621551513672, 78.0948653711902], [0.0557880401611328, 80.6218789509844], [0.055694580078125, 83.2317242356581], [0.0553989410400391, 85.9261174412568], [0.0549182891845703, 88.7062607196862], [0.0542659759521484, 91.5762587757291], [0.0534553527832031, 94.5399283765336], [0.0524997711181641, 97.6007886010705], [0.0514163970947266, 100.758191977108], [0.0502128601074219, 104.020498705481], [0.0489063262939453, 107.386126267415], [0.0475063323974609, 110.86091326649], [0.0460243225097656, 114.448472803962], [0.0444698333740234, 118.154386276427], [0.0428581237792969, 121.976831926568], [0.0411949157714844, 125.925369876605], [0.0394935607910156, 129.999472479289]] => nil