マイクロストリップ線路のインピーダンス
アンテナの話。
ヘリカルアンテナの製作で、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