ガラスビーズコア高周波巻き線インダクタの自作

はじめに

高周波回路で使用するインダクタを自作できないかと思い、手芸用のガラスビーズに銅線を巻いて空芯コイルを作ることを思いついた。というのも、普通はコア材としてフェライトやカーボニル鉄を選ぶと思うが、1 GHz以上の高周波になるとコア材の複素透磁率は虚部が支配的となり高いQ値が得られない。また、高周波回路では数十nH程度の小さいインダクタンスを使用することが多く、空芯コイルでも十分実現可能となる。ガラスビーズの材質はガラスなので、当然透磁率はμ=1であり、はんだ付けの際の耐熱性にも優れていて、入手性も問題ない。

たぶん、おそらく、電子工作でガラスビーズにコイルを巻いたのは私が初めてなんじゃないかと思う。

巻き線インダクタの自作

コア材にはMIYUKI製のガラスビーズ、外径約2mmのものを使用し、巻き線にはΦ0.1mmのポリウレタン銅線を用いる。色々試して分かったが、MIYUKI製のビーズは形が整っていて他メーカーと比べて寸法ばらつきが小さい。350粒入り(3g)で80~100円程度なのでかなりオススメ。

ビーズに銅線を巻いていく。巻き方によってもインダクタンスが変わるため基準を決めておく。今回は、巻き始めと巻き終わりが180°反対側にくるようにし、中間の巻き線はできるだけ均等に分布するように巻いた。巻き数はガラスビーズを1周するごとに1巻きと定義する。見た目はトロイダルコイルっぽいが原理的にはソレノイドコイルに近いため、一般的なトロイダルコイルの巻き数定義とは異なる。下図のように、1T~10Tのコイルを作製した("T"はturnの意味)。

自作した巻き線インダクタ

インダクタンスの測定方法

NanoVNA-F V2でS11を測定しインピーダンスに変換してインダクタンスを測定する。NanoVNA-F V2は3 GHzまで測定可能であり、PCに接続してNanoVNA-Saverというソフトから制御した。

NanoVNA-F V2

VNAでインピーダンスを測定する際、基準面を正しく設定することが重要である。下図のようにいったんNanoVNAのポートで校正を行った後、DUTを接続するコネクタ端面まで基準面を移動する手法をとった。NanoVNAでは"electrical delay"(NanoVNA-Saverでは"calibration"→"offset delay")を設定することで、基準面の移動が可能である。offset delayの調整は、コネクタ端面でショートする治具を接続しスミスチャート上でショートに見えるように値を合わせ込む。私の測定環境ではちょうど100 psとなった。

基準面の移動その1

基準面の移動その2

校正と基準面の設定が終わったら、いよいよDUTに繋ぎ変えてS11の測定を行う。DUTは下図のようにSMAコネクタ端面に最短距離で実装している。

SMAコネクタに実装したDUT

測定結果

巻き数とインダクタンスの関係を下表および下図に示す。インダクタンスは300 MHzにおけるZ11から計算している。また、LCR並列共振回路で近似したときのキャパシタンス(線間容量)も表に記載している。線間容量は巻き数に応じて増える傾向にあるが、実装のばらつきにより巻き数との相関が取れていない部分もある。

巻き数 L: インダクタンス C: 線間容量
1T 5.49 nH 0.22 pF
2T 8.56 nH 0.22 pF
3T 12.0 nH 0.272 pF
4T 14.8 nH 0.256 pF
5T 17.9 nH 0.227 pF
6T 22.4 nH 0.238 pF
7T 28.3 nH 0.274 pF
8T 39.2 nH 0.271 pF
9T 44.4 nH 0.260 pF
10T 53.7 nH 0.272 pF

測定結果:巻き数とインダクタンスの関係

以下にインピーダンスの周波数特性のグラフを示す。黒点は測定結果、赤の点線は並列LCR共振回路でフィッティングした特性を表している(R=4 kΩ)。自己共振周波数が読み取れる。

測定結果:巻き数=1T, 2Tのインピーダンス特性

測定結果:巻き数=3T, 4Tのインピーダンス特性

測定結果:巻き数=5T, 6Tのインピーダンス特性

測定結果:巻き数=7T, 8Tのインピーダンス特性

測定結果:巻き数=9T, 10Tのインピーダンス特性

おまけ

せっかくビーズを買ったので何か編み物も作ってみたくなった。調べてみると、ブリックスティッチやスクエアステッチといった編み方があるようだ。試しに、ドット絵のクロミちゃんをスクエアスティッチ法で編んでみた(下図)。はじめてにしては上手くできたと思う。ダイソーで見つけたチェキフレームに入れてみた。磁石で壁に貼ることができる。

ショットキーバリアダイオード1SS154のモデル化

はじめに

秋月電子で購入できる高周波用ショットキーバリアダイオード1SS154(東芝製)について、Ngspiceを用いてSPICEモデルを作成したので記事に残す。秋月のショットキーの中ではこれが最も寄生容量が小さく高周波向きである。今後1SS154を使用して~2.4 GHz帯のダイオードミキサや検波器等に応用したい。NgspiceはオープンソースのSPICE系シミュレータであり、ネットリスト直書きでコマンドラインで使用する。シミュレータはLTspiceでもQucsでも良かったが、Ngspiceはスクリプト内でif文やwhile文が扱えるところに魅力を感じているので、練習も兼ねて今回はNgspiceを使用した。

↓秋月の商品ページ
高周波用ショットキーバリア・ダイオード 1SS154: 半導体 秋月電子通商-電子部品・ネット通販

SPICEモデル

作成したSPICEモデルを下に記載する。SOT23パッケージの寄生成分を表現するためにサブサーキットとして記述している。SOT23パッケージについては、Skyworksのアプリケーションノート「APN1001: Circuit Models for Plastic Packaged Microwave Diodes」を参考にした。

file: 1SS154.spice

* 1SS154, Toshiba, schottky barrier diode
* SOT23 package model
.subckt 1SS154 1 2
d1 4 5 1SS154_die
c1 1 0 0.13p
c2 3 0 0.01p
c3 5 0 0.015p
c4 2 0 0.13p
l1 1 3 0.65n
l2 3 4 0.05n
l3 5 2 0.7n
.ends

* bare die model
.model 1SS154_die D (is=2.8n rs=6.0 eg=0.69 xti=2.0 bv=6.0 trs1=6m ikf=7m
+ cjo=0.66p m=0.23 vj=0.25)

特性結果

Ngspiceによる順方向電流-電圧特性(If-Vf)、および端子間容量-逆電圧特性(Ct-Vr)の計算結果を下図に示す。

If-Vf特性結果(Ta=-25, 25, 75 ℃)
Ct-Vr特性結果(Ta=25℃, f=1 MHz)

参考までにデータシートより抜粋

データシート

Ngspiceスクリプト

自分用のメモとして、Ngspiceのスクリプトも載せておく。

file: IV_forward.spice

.title forward current versus forward voltage simulation
.include 1SS154.spice

vs n001 0 dc 0      $ voltage source
x1 n001 0 1SS154    $ diode

.control
* dc simulation command
* .dc srcnam vstart vstop vincr [src2 start2 stop2 incr2]
dc vs 0.01 0.8 0.01 temp -25 75 50

* color0 is the background, color1 is the grid and text color
* colorN(2..22) is the plotted line color
set color0=rgb:ff/ff/ff color1=rgb:80/80/80 color2=rgb:ff/00/00
set xbrushwidth=2
set wfont='DejaVu Sans Mono'
set wfont_size=12
plot -i(vs) ylog xlimit 0 0.8 ylimit 1e-5 0.1
.endc
.end

file: CV.spice

.title total capacitance versus reverse voltage simulation
.include 1SS154.spice

vs n001 0 dc 0 ac 1 $ voltage source
rs n001 n002 1      $ source impedance
x1 0 n002 1SS154    $ diode

.options temp=25

.control
let n=101
let x=vector(n) $ vector for x axis: reverse voltage
let y=vector(n) $ vector for y axis: total capacitance

* sweep reverse voltage
let index=0
let vstep=5/(n-1)
while index < n
    alter vs dc vstep*index
    ac lin 1 1Meg 1Meg $ .ac lin np fstart fstop
    let admit=v(n001,n002)/v(n002)
    let cap=imag(admit)/(2*pi*frequency)

    $ store the result in the vectors
    let x[index]=abs(vstep*index)
    let y[index]=abs(cap)
    let index=index+1
end
settype voltage x
settype capacitance y

* color0 is the background, color1 is the grid and text color
* colorN(2..22) is the plotted line color
set color0=rgb:ff/ff/ff color1=rgb:80/80/80 color2=rgb:ff/00/00
set xbrushwidth=2
set wfont='DejaVu Sans Mono'
set wfont_size=12
plot y vs x ylimit 0.1p 1p xlabel 'reverse voltage' ylabel 'total capacitance'
.endc
.end

200年ぶりに秋葉原に遊びに行った話

2024年12月1日(日)、特に目的もなかったが天気もいいし気分転換にと久々に秋葉原に遊びに行った。買い物は秋月でピンヘッダとかをとりあえず大量買いしたり、千石で何か面白いものないかなあと見て回ったりしただけ。ラジオデパートのマイクロパワー研究所というミリ波帯・テラヘルツ帯の色々とすごい機材を持っているところに興味があったので、そこのおじさんとちょっとだけお話をしたりした。最初はちょっと話しかけづらかったが、話してみると普通に感じの良いおじさんで楽しかった。VDI製のWR1.2(導波管の規格で600-900 GHz帯)のコンバータを見せてもらった。ロマンが詰まっていた。

おまけ・・・

千石電商にネオン管が安く売られていたので光らせてみた。コンセントのAC100 Vから手持ちの1.5 MΩとネオン管を繋ぐだけで簡単に光った。あんまり原理を理解していないが、ガラス管の中に2本の電極がありネオンガスが封入されている。ぼわぁーという感じの光り方できれいだ。

PLLシンセへの道~ チャージポンプについて、ひとりごつ。

はじめに

以前VCOの試作(広帯域VCOの試作(1~2.2 GHz/1.6~2.7 GHz) - ペEの日記)をしたが、これを使ってPLLシンセサイザへと応用したい。実はあの後、もう一度基板を起こしてPLLを組んでみたのだが上手くいかなかった。現象としては位相ロックがかかりづらく、ロックしたときのスペクトラムを見ると比較周波数の1 MHz(とその整数倍)オフセットのスプリアスが大きいことがわかった。つまり、リファレンスがだだ漏れだったということである。原因はおそらくチャージポンプ回路の応答が悪いことだと考えられる。今回はその反省と改善案をこの記事に残す。

やりたいこと

下図にPLLのブロック構成を示す。最初に位相比較器(PFD: phase frequency detector)でリファレンスクロック(1 MHz)と帰還したVCO出力との位相を比較し、位相差に比例したパルス幅の信号がUpとDownに出力される。VCOの位相が遅れている場合はUpパルス、位相が進んでいる場合はDownパルスが発生する。位相比較器の後段のチャージポンプは電流源とスイッチで構成され、UpがHighのときループフィルタのキャパシタを充電し、DownがHighのとき放電する仕組みとなる。

PFDと分周器はFPGAを用いれば簡単に構築できるが、チャージポンプとループフィルタはアナログ回路で組む必要があり、これを実現したい。

PLLのブロック図

失敗の反省

下図に試作したチャージポンプの回路を示す。図中のループフィルタ定数は未定なのと、ジャンパJP3は部品を外付けできるようにしているだけであり、実際には接続していない。

オペアンプの反転増幅・積分器を応用した回路となる。オペアンプはMAX9945を使用した。FET入力のため入力バイアス電流が極めて小さく(50 fA)、耐圧が十分に高く(38 V max.)、レールトゥレール出力である。オペアンプのプラス入力(+)に3.3 Vを1/2分圧した1.65 Vを与えているため、イマジナリーショートの考え方でマイナス入力(-)を1.65 Vに保とうとする制御が働く。図中のPFD_DNとPFD_UPはFPGAの位相比較器出力であり、PFD_DNがHigh=3.3 Vのとき約1.3 mAの電流がループフィルタに流れ込み、PFD_UPがLow=0 Vのとき約1.3 mAの電流をループフィルタから引き込む。(補足:ショットキーバリアダイオードの順方向電圧を0.35 Vとして(1.65 V-0.35 V)÷1 kΩ~1.3 mA、という計算。)

オペアンプ出力に付いたツェナーダイオード(15 V)はVCOのバリキャップダイオードの過電圧保護のため。

失敗したチャージポンプ回路

この回路の欠点は、オペアンプの帯域が狭いとイマジナリーショートの考え方が効かなくなり、位相比較器出力のパルスがループフィルターを通してつーつーになってしまうことである。今回、比較周波数を1 MHzとしていたがMAX9945の帯域は3 MHzしかなく、高調波成分を多く含んだパルス信号はつーつーとなってしまった。結果、リファレンスだだ漏れ、スプリアスわちゃわちゃスペクトラムになってしまった。

改善案

失敗は成功のもと。ということで、応答速度を改善した回路を考えた。前回はチャージポンプとループフィルタが一体型のアクティブフィルタ構成になっていたわけだが、やはりシンプルにブロック図通りのパッシブフィルタ構成が良いと思った(というのも、パッシブフィルタだったらパルスの高調波成分はキャパシタを通じてGNDに落ちるから)。チャージポンプは、オペアンプのような帰還素子を使うと帯域制限があるので、できればトランジスタのfT上限まで活かして高速応答を実現したい。

LTspiceを用いて考えたチャージポンプ回路の改善案を下図に示す。トランジスタは東芝製の2SC4117と2SA1587を使う想定とする。トランジスタモデルが東芝のwebページからダウンロードできるのが有難い。U10, U1, U4およびU7, U8はカレントミラーを構成し、電流値はR4で決定する。U2, U3およびU5, U6は差動ロジックとなっており、VdownがLow=0 VになるとU2がオンしてoutから電流を引き込み、VupがLow=0 VになるとU5がオンしてカレントミラー(U7, U8)により電流がoutに流れ出す。

シミュレーションではoutにダミーの抵抗Rloadとチャージ電圧Vchargeが繋がっているが、実際にはループフィルタが接続される。

余談:近年はほとんどCMOSロジックが主流だが、ECL(emitter-coupled logic, エミッタ結合論理)というバイポーラトランジスタの差動回路を駆使して高速性を実現した論理回路が存在する。今回のこれも、それを見習った。トランジスタが飽和しない領域(過剰キャリアの蓄積がない)を使うので、速い応答速度が見込める。

改善したチャージポンプ回路

以下にシミュレーション結果を示す。パルス幅(t_on)を100 ns、50 ns、20 nsとしたときの出力電流波形を示している。Vcharge=1~13 Vとスイープした波形が重なっており、VCOの制御電圧範囲を満たしている。

電流のピーク値は4 mA程度(R4で決定)で、t_on=100 ns、50 nsではほぼ矩形波形状となっている。t_on=20 nsはぎりぎりという感じで、立上がり・立下り時間(t_rise, t_fall)は10 ns程度と予想される。これ以下のパルス幅では十分な電流出力が得られず不感帯となる。実際、他のPLLでもこの不感帯が問題となることがあり、位相比較器のANDとD-FFの間に~数nsの遅延器入れることで改善できる場合がある。

t_on=100 nsのときの出力電流波形

t_on=50 nsのときの出力電流波形

t_on=20 nsのときの出力電流波形

広帯域VCOの試作(1~2.2 GHz/1.6~2.7 GHz)

はじめに

今回は、マイクロストリップフィルタを用いた広帯域VCO(voltage controlled oscillator)を試作し、発振周波数・出力パワーを測定したので記録として残す。過去にも何度かVCOの試作にトライしてきたが、安定した発振を得るのが難しかった。今回の試作は結構上手くできたと思うので、これを基にしてPLLシンセサイザへと発展させたい。

原理

集中定数の発振回路では、コルピッツ発振回路やハートレー発振回路といった回路が有名だが、基本原理はどれも同じでフィードバックループの位相が360°(またはその整数倍)まわる周波数でゲインを持たせることで発振が得られる。よく例えられるのが、スピーカーとマイクのハウリングの原理。スピーカーで再生された音がマイクに拾われて、アンプで増幅されてスピーカーから再生される。これが繰り返され、ちょうど位相の揃う周波数が増強されて「キーーン」と鳴る。

Figure 1に今回試作した発振回路の構成を示す。位相をまわすフィードバック部分に分布常数回路を用いたバンドパスフィルタを採用した。バンドパスフィルタは、狭帯域であるほど通過帯域内で位相が急峻に回る。位相特性の傾きが急峻であるほど、スペクトラム線幅の細い、位相雑音の小さい発振器を作ることができる。

Figure 1 - Principle of VCO using a tunable filter

ざっくりとした理解だと、位相特性のグラフφ(f)とφ=360°との交点が発振周波数foscになる。Figure 2(a)のようにφ(f)の傾きがなだらかな場合、位相特性が少し変動するだけで交点の位置が大きくズレてしまうため、発振周波数が揺らぎ位相雑音としては大きくなる。一方、Figure 2(b)のようにφ(f)の傾きが急峻であれば、位相特性の変動に対して交点の位置はほとんど動かず、そのぶん位相雑音は小さくスペクトラム線幅も細くなると考えられる。

Figure 2 - Slopes of φ(f) and phase noises

過去に、チューナブルフィルタの実験をしたことがある。DUTはマイクロストリップの結合線路を用いたコムラインフィルタ。振幅・位相特性をNano VNAで測りながらバリキャップの電圧を調整して、特性が変化することを確認できた。通過帯域内で位相が急峻に回るようすがNano VNAの画面から読み取れる。

Figure 3 - Experiment of a tunable filter


下の論文が参考になった。
C. -H. Tseng and C. -L. Chang, "Design of Low Phase-Noise Microwave Oscillator and Wideband VCO Based on Microstrip Combline Bandpass Filters," in IEEE Transactions on Microwave Theory and Techniques, vol. 60, no. 10, pp. 3151-3160, Oct. 2012, doi: 10.1109/TMTT.2012.2210441.

回路図

Figure 4にVCOの回路図を示す。結合したマイクロストリップ両端のオープン容量をバリキャップにすることでチューナブルフィルタを構成する。R1~R3を介してバリキャップダイオード1SV280に逆バイアスを与える。マイクロストリップの中点がちょうど節(振幅が最小)となるため、R1~R3を中点に配置することで共振器の損失を抑える。フィルタ~FETは無駄な遅延を入れたくないので、とにかく最短距離で配置する。

Figure 4 - Schematic of the VCO prototype

FETはデプレッション型のNE76084を用いるが、ゲートはゼロバイアスで使うことにした。ドレイン電流はMax. 30 mAくらい流れる。ドレイン電圧VdはインダクタL1を介して供給する。Vdは低いとゲインが足りず、高いとバリキャップが飽和するためか発振が止まってしまい、最適値が存在することが実験から分かった。実験によりVd=1.5 Vが良さそうだった。C4はDCカット、R5は負荷インピーダンスを軽くするために入れている。出力パワーを取るためにR5は小さくしたいが、負荷が重すぎると発振しないのでトレードオフがある。

試作

フィルタ部のストリップ長L=6 mmと12 mmの2種類を試作した(Figure 5)。プリント基板はFusion PCBのFR4-TG130、1 mm厚、以前のブログ記事から比誘電率はεr=4.95と推定。

Figure 5 - Photographs of (a) VCO L=6 mm and (b) VCO L=12 mm

測定結果①(VCO L=6 mm)

測定環境は、2.1 GHz以下はSIGLENTスペアナで直接観測し、2.1 GHzより上はHMC213ミキサ+EVAL-ADF4351でダウンコンバートしてスペアナで観測した。EVAL-ADF4351ではHMC213の推奨LOレベルに満たないことと、HMC213の変換損を外挿して求めているので測定結果のPoutは正しくないが許してほしい。

VCO L=6 mmの発振周波数(fosc)と出力パワー(Pout)の特性をFigure 6に示す。Vctrl=2~13 Vの範囲で、発振周波数は1.6 GHz~2.7 GHzまで変化した。ただ、Vctrl=2 V以下では発振が弱く、1.6 Vを下回ると発振が止まってしまうことが分かった。Vctrlが低い領域では、バリキャップの直列抵抗成分によりQ値が劣化するためだと思う。Poutは、周波数が高いほど高出力となり、2 GHz以上では0 dBmを超えてくるので結構嬉しい。Vcrtlはバリキャップのブレークダウン電圧を超えないよう13 Vまでとした。

Figure 6 - VCO L=6 mm, fosc and Pout vs. Vctrl

PLLシンセサイザに組み込む際には、VCOの伝達関数の比例定数Kvco [Hz/V]というパラメータを用いることになる。Figure 7にKvco vs. foscの結果を示す。

Figure 7 - VCO L=6 mm, Kvco vs. fosc

測定結果②(VCO L=12 mm)

Figure 8、9にそれぞれ、VCO L=12 mmのfosc/Pout vs. Vctrl特性、Kvco vs. fosc特性の測定結果を示す。VCO L=12 mmはVctrl=0 Vから安定した発振が得られた。発振周波数は1 GHz~2.2 GHzまで変化した(実際に使うときはちょっと余裕を持たせて1.1 GHz~2.1 GHzあたりで使うことになると思う)。出力Poutは低域側はやっぱり弱く-5 dBm程度で、高域にいくほど高出力となる。

Figure 8 - VCO L=12 mm, fosc and Pout vs. Vctrl

Figure 9 - VCO L=12 mm, Kvco vs. fosc

課題(自己共振の抑制)

部品を色々付け替えたりしている中で、ある条件で異常な発振スペクトラムとなる現象を発見した。Figure 10にその時のスペクトラムを示す。パスコンC3=1 nF、インダクタL1=100 nHを使用した場合に発生し、1.7 GHz~1.8 GHzに遷移する領域で、1本だったスペクトラムが分裂してコム状に変化した。C3を47 pFに変更したり、L1に100 Ω抵抗を並列したりするとこの現象が抑えられたことから、どうやらチップコンデンサ、チップインダクタの自己共振が原因ではないかと思う。1608サイズの積セラ1 nFは300 MHz付近に自己共振(直列共振)があり、それ以上の周波数ではインダクティブとなる。また、今回使用した巻き線チップインダクタ100 nHは1.8 GHzに自己共振(並列共振)がある。

つまり、コンデンサ、インダクタの自己共振によってループゲインの位相特性にうねりが生じ、不安定な発振条件となっているのかもしれない。周波数ジャンプ(発振周波数特性が不連続で、ある周波数から別の周波数に飛び移ること)の中間の状態でこのような現象が起こるみたいな話をどこかで聞いたことがある。

Figure 10 - Spectra during sweep from fosc=1.7 GHz to 1.8 GHz

対策として、インダクタに並列に抵抗を入れることで自己共振のQ値を下げる方法が思いつく。Figure 11に改善した回路を示す。インダクタL1にR6=33 Ωを並列に追加し、さらにハイインピーダンスを保つためのインダクタL2を直列に入れる。FETから見たインピーダンスがR6によりレジスティブになるので、自己共振の影響が小さくなるのではないかと考えた。実際にこの回路にしてみて、Figure 10のようなコム状のスペクトラムがなくなることを確認した。

Figure 11 - Circuit improvement to suppress paracitic resonances

BGA616というアンプ

はじめに

今回は、秋月電子で販売されているBGA616というInfineon製のDC~2.7GHz広帯域アンプを評価してみた。

akizukidenshi.com

データシートからFeatureの部分を引用↓

  • 3 dB-bandwidth: DC-2.7 GHz with 19.0 dB typical gain at 1.0 GHz
  • Compression point P1dB=18 dBm at 2.0 GHz
  • Noise figure=2.6 dB at 2.0 GHz
  • Absolute stable
  • 70 GHz fT - Silicon Germanium technology

上からひとつひとつ確認していくと、3 dB帯域幅がDC-2.7 GHzで、1 GHzのゲインが19 dB。P1dB(1-dB compression point)とは、入力電力を上げていくとアンプの出力がサチってきて、ゲインがちょうど1 dB低下する点のこと。P1dB=18 dBmと高出力で使いやすそう。Noise Figure(NF)は付加される雑音の指標。入力雑音レベルが-174 dBm/Hz(熱雑音レベル)のとき、出力雑音レベルは-174 dBm/Hz+18 dB (Gain@2 GHz)+2.6 dB (NF@2 GHz)=-153.4 dBm/Hzという計算になる。Absolute stableは絶対安定、つまりどんなインピーダンス負荷を繋いでも発振しませんよ、ということ。最後に、fT=70 GHzのSiGeプロセスを使っているらしい。

結構良さそうなアンプだと思い、評価してみることにした。

回路

データシートのTest Circuit(下)を参考に、出力ピンからBias Teeで電源を供給する。Bias Teeはインダクタとキャパシタで作る。手持ちに100 nHのチップインダクタ(LQW18ANR10G00D, 自己共振周波数:1.8 GHz)があったのでそれを使うことにした。

下にPCBのレイアウトを載せる。基板は1 mm厚のFR4でFusion PCBに作ってもらった。一晩で適当にレイアウトしたのでSMAコネクタのピッチとかミスったりしたけど、結果的になんとかなった。

測定

測定はスペアナのトラッキングジェネレータを使用した。nanoVNA-F V2も持ってるんだけど、SOLTでキャリブレーションとか面倒くさいのでスペアナにした。バイアス電流(Id)をテスタでモニタしながら、アンプがサチらない程度に入力パワーを-20 dBmに設定して小信号利得を測った。

測定のようす↓

ゲイン vs 周波数の測定結果(0.1~2.1 GHz, Id=0~60 mAで変化)↓。Id=60 mAのとき、ゲインは18.4 dB@1 GHzとなった。Id=10 mA~60 mAの範囲で利得が大きく変わるので、バリアブルゲインアンプとしても使えるかもしれない。

1 GHz, 2 GHzにおけるゲイン vs Idの測定結果↓。

~~~

お友達のJP7VTFさんに余った基板をあげたら、実装して測ってくれた。BGA616のチップも1個分けてもらった(ありがとう~~)。JP7VTFさんはADALM-Plutoというソフトウェアラジオを使って6 GHzまで測定できる環境を持っている。下にJP7VTFさんの測定結果を載せる(許可をいただきました)。2 GHzあたりからだらだらと利得が落ちているが、5.6 GHz帯らへんでも10 dB程度のゲインがあるので、無理をすればここら辺でも使えないこともないかも。

Fusion PCBのFR-4の誘電率を測ってみた

はじめに

Fusion PCBという$4.9〜でプリント基板を注文できるサービスがある。Fusion PCBの注文画面(下)では、材質をFR-4 TG130、アルミ基板、フレキシブル基板から選択できる。「TG130」はガラス転移温度130℃という意味で、耐熱性を示している。

Fusion PCBの注文画面

今回は、Fusion PCBのFR-4基板の誘電率を知りたいので、マイクロストリップのオープンスタブの共振周波数から求めてみようと思った。正しい誘電率を知ることで、結合線路を用いたバンドパスフィルタ等の設計ができたらいいなと思う。

試作したオープンスタ基板の写真を下に示す。基板厚は1 mm、スタブ長30mmとし、SMAコネクタをつけて2ポートで測れるようにした。

試作したオープンスタブ基板

原理:
高周波分からない人向けに簡単に原理を説明すると、マイクロストリップ線路のような伝送線路を高周波信号が伝搬するのに遅延が発生する。たとえば、1 GHzの信号が長さ1波長(λ)の伝送線路を伝搬するには、1 nsの遅延時間となる。また、FR-4等の誘電体を伝送線路に使う場合、その誘電率によって波長が短縮される(光と屈折率の関係と同じ)。オープン端ではほぼ全反射するので、λ/4のオープンスタブでは行って帰ってくるのに合わせてλ/2分位相が遅れる。入力した波と、反射して帰ってきた波とが打ち消しあうことで入力端での振幅がゼロ(ロスレスな場合)になる。この共振周波数において、2ポート間の通過特性(S21)が最小となるので、共振周波数を見つけることができれば波長短縮率が分かり、FR-4の誘電率も求めることができる。

測定結果

スペアナのトラッキングジェネレータを使って通過特性を測定した。トラッキングジェネレータとは、スペアナのスイープと同調した信号出力のこと。Thruで校正した後、DUTを挿入することでスカラーネットワークアナライザとして使うことができる。

測定のようす

測定結果を下に示す。スタブの共振周波数は1.27666 GHzとなった。1.5 GHz程度を予想していたので、低めになった印象。

通過特性の測定結果

誘電率をフィッティング

openEMS(FDTD方式の電磁界シミュレータ)を使ってFR-4の誘電率をフィッティングする。openEMSの使い方については他の記事で(拙いが)説明しているので、ぜひ参考にしてほしい。下にシミュレーションモデルを示す。ポートはLumpedPortを使用。SMAコネクタ等は複雑なのでモデルに含めていない。

openEMSのモデル

openEMSのスクリプトの一部を下に示す(ソース全体は一番下に載せる)。SetMaterialProperty()関数でFR-4の比誘電率 εr を設定する。残念ながらtanδ(誘電正接、タンデル)は設定できないようなので、代わりに電気伝導率 κ [S/m]を設定している。フィッティングした結果、εr=4.95, κ=0.004 という値となった。誘電率は思ったより高めになったが、調べてみるとFR-4の誘電率は4.3~5.0とあるのでメーカによっても結構ばらつくのかもしれない。

epsilon_r = 4.95;
kappa = 0.004;

% FR4
CSX = AddMaterial(CSX, 'FR4');
CSX = SetMaterialProperty(CSX, 'FR4', 'Epsilon', epsilon_r, 'Kappa', kappa);

結果の比較(下)。ぴったり一致はしていないが、コネクタやケーブルの特性が乗ってしまっているからだろうか。VNAを使ってDUTのポート端面でキャリブレーションやディエンベッドしたら一致するかも?

測定結果とシミュレーション(εr=4.95, κ=0.004)の比較

結論

オープンスタブの試作基板を測定し、openEMSでFR-4の誘電率をフィッティングしたところ、比誘電率 εr=4.95 という結果が得られた。

ソースコード

openEMSのソースコード(Matlab/GNU Octave)を下に載せる。メッシュを作成するGradedMesh()関数については openEMSのメッシュを切る関数自作した - ペEの日記を参照。

close all
clear
clc

physical_constants;
unit = 1e-3;

% Design parameters
W0 = 1.9;  % Microstrip width
L0 = 31;   % Open stub length
L1 = 16.6; % Feeding line length

% Substrate dimensions
Ws_neg =  9.2; % Length in -x direction
Ws_pos = 34.8; % Length in +x direction
Ls     = 25.0; % Length in y direction
thickness = 1;

f0 = 1250e6; % Center frequency
fc = 250e6; % 20dB cutoff frequency

epsilon_r = 4.95;
kappa = 0.004;

% Setup FDTD
FDTD = InitFDTD('EndCriteria', 1e-6, 'NrTS', 1e5);
FDTD = SetGaussExcite(FDTD, f0, fc);
BC = { 'MUR' 'MUR' 'MUR' 'MUR' 'PEC' 'MUR' };
FDTD = SetBoundaryCond(FDTD, BC);

% Setup CSX
CSX = InitCSX();

% Materials
% FR4
CSX = AddMaterial(CSX, 'FR4');
CSX = SetMaterialProperty(CSX, 'FR4', 'Epsilon', epsilon_r, 'Kappa', kappa);
% Metal (PEC)
CSX = AddMetal(CSX, 'PEC');

% Substrate
start = [-Ws_neg -Ls/2 0];
stop  = [+Ws_pos +Ls/2 -thickness];
CSX = AddBox(CSX, 'FR4', 1, start, stop);

% Open stub
start = [ 0 -W0/2 0];
stop  = [L0 +W0/2 0];
CSX = AddBox(CSX, 'PEC', 10, start, stop);

% Feeding line
start = [-W0/2 -L1/2 0];
stop  = [+W0/2 +L1/2 0];
CSX = AddBox(CSX, 'PEC', 10, start, stop);

% Lumped ports
% Port 1
start = [-W0/2 -L1/2 0];
stop  = [+W0/2 -L1/2 -thickness];
[CSX port{1}] = AddLumpedPort(CSX, 999, 1, 50, start, stop, [0 0 1], true);

% Port 2
start = [-W0/2 +L1/2 0];
stop  = [+W0/2 +L1/2 -thickness];
[CSX port{2}] = AddLumpedPort(CSX, 999, 2, 50, start, stop, [0 0 1], false);

% Mesh
mesh.x = [];
mesh.y = [];
mesh.z = linspace(-thickness, 0, 5);
mesh.z = [mesh.z 5];

mesh = DetectEdges(CSX, mesh);
mesh = GradedMesh(mesh, 1);
CSX = DefineRectGrid(CSX, unit, mesh);

Sim_Path = 'tmp';
Sim_CSX = 'tmp.xml';

[status, message, messageid] = rmdir(Sim_Path,'s');
[status, message, messageid] = mkdir(Sim_Path);

WriteOpenEMS([Sim_Path '/' Sim_CSX], FDTD, CSX);
CSXGeomPlot([Sim_Path '/' Sim_CSX]);

% return
RunOpenEMS(Sim_Path, Sim_CSX, '');

% Post processing
f = linspace(f0-fc, f0+fc, 401);
port = calcPort(port, Sim_Path, f, 'RefImpedance', 50);

S11 = port{1}.uf.ref ./ port{1}.uf.inc;
S21 = port{2}.uf.ref ./ port{1}.uf.inc;

% Plot result
figure('Position', [100 100 500 300]);
plot(f/1e9, 20*log10(abs(S11)), 'r-', 'DisplayName', 'S_{11} (Sim.)');
hold on
plot(f/1e9, 20*log10(abs(S21)), 'b-', 'DisplayName', 'S_{21} (Sim.)');
grid on
legend('Location', 'southeast');
xlabel('Frequency (GHz)');
ylabel('S Parameters (dB)');
xlim([f0-fc f0+fc]/1e9);

% Measured data
data = importdata('data.csv');
f_Meas   = data(:, 1);
S21_Meas = data(:, 2);
plot(f_Meas/1e9, S21_Meas, 'k--', 'DisplayName', 'S_{21} (Meas.)');