はじめに
前の記事でフライバックコンバータの動作原理について理解を深めた。今回は実際に12 V → 1700 V, 4 mA(6.8 W)の昇圧コンバータを設計してみる。ヘリウムネオン(He-Ne)レーザー用電源を自作することが当面の目標である。
■ 関連記事:
フライバックコンバータについて理解したい(その1) - ペEの日記
フライバックコンバータについて理解したい。その2:RCDスナバ回路 - ペEの日記
■ 補足:
友人から頂いたヘリウムネオンレーザーは1320 V, 4 mAで駆動し、始動時は約8 kVを必要とする。レーザー管に高電圧をかけると放電し、まずヘリウム原子が励起状態となる。次に、ヘリウム原子がネオン原子と衝突することでネオン原子が励起状態になる。上位準位の寿命時間が長いことから反転分布(励起したネオン原子がウヨウヨいる状態)が形成され、誘導放出によりレーザー発振が引き起こされる。
なぜ1700 Vかというと、発振状態のレーザー管は負性抵抗を持っており、そのまま電圧をかけると不安定動作になってしまう。そこで、バラスト抵抗(80~100 kΩ程度)を直列に入れることで負性抵抗を打ち消す必要がある。さらに、始動時の8 kVを生成するための電圧マルチプライヤ(コッククロフトウォルトン回路)の電圧降下分を考慮すると、1700 V, 4 mA(6.8 W)出力が要求値となる。
なお、8 kV生成回路、フィードバック回路等は今回のシミュレーションに含めていない。まずはフライバックコンバータ部の実現性を確認し、詳細設計は次回以降行う予定とする。
基本設計
図1に設計した昇圧コンバータの回路図を示す。トランスの二次電圧は850 Vであり、後段の倍電圧整流回路により850×2=1700 Vまで昇圧する構成とした。倍電圧整流回路には前回の記事でモデル化した高耐圧ダイオードESJA57-04を使用する。
フライバックコンバータは電流不連続モード(DCM)で動作させる。
図1:12 V→1700 V昇圧コンバータのテスト回路
➤ トランスコア・ボビンの選定
コアはEPCOS(TDK)製のB66361G0100X187を選定してみた。Digikey(マルツ)で入手可能である。専用ボビンB66362B1014T001は巻き枠が20.9 mmあるので、Φ0.1 mmポリウレタン銅線×150ターンを一層巻きできる(はず)。多層巻きすると層間容量が付き共振の原因となるため、できるだけ一層で巻きたい。
B66361コアのパラメータ一覧を表1に示す。コア材はN27とN87があり(どちらもMn-Znフェライト)、N27は100 kHz以下の低周波用途、100 kHz~500 kHzの高周波用途に適している。今回はスイッチング周波数をfs=100 kHz(仮)としたいのでN87を選択した。
表1:B66361G**00X187のパラメータ一覧
| 項目 |
値 |
補足 |
| 平均磁路長 le |
78.6 mm |
ギャップなしの場合 |
| 磁路断面積 Ae |
97.1 mm² |
- |
| 比透磁率 μr |
1670 |
- |
B66361G0100X187は単体でギャップ長lg=0.1 mmあり、2つ貼り合わせることでlg=0.2 mmとなる。このとき、見かけ上の平均磁路長はle'=78.6 mm-0.2 mm+1670×0.2 mm=412.4 mmとなる。
1サイクルに蓄えられるエネルギーEmaxは
で求められる。したがって、最大磁束密度をBmax=200 mTとした場合、Emax=0.382 mJとなる。スイッチング周波数fs=100 kHz、電力効率η=70%と仮定すると、伝達できる最大電力はPmax=η×fs×Emax=26.7 Wとなる。今回の要求値は6.8 Wなので十分に余裕がある。
➤ トランス一次巻数の決定
出力電力Pout=6.8 W、効率η=0.7、スイッチング周波数fs=100 kHzとしたとき、1サイクルで必要なエネルギーはE=Pout/(η×fs)=0.0971 mJとなる。一方、スイッチオン時に蓄えられるエネルギーは次式で求められる。
最大デューディ比Dmax=0.5とするとき、Ton<5 μs(=Dmax/fs)以内でE=0.0971 mJに達する必要がある。したがって、一次インダクタンスLpは次式を満たす必要がある。
AL値はAL=0.494 μH/N²(=μ×Ae/le)なので、Np=5の場合→Lp=0.494×5²=12.4 μH、Np=6の場合→Lp=0.494×5²=17.8 μHとなる。6回巻きだとちょっと余裕が少ない気がするので今回は5回巻きとしてみた。
Np=5回巻のとき、一次電流の最大値はlp,max=3.97 A(=√(2×E/Lp))、オン時間はTon=4.08 μs(=Lp×lp,max/Vin)と求まる。
➤ トランス二次巻数の決定
上で述べたように、専用ボビンB66362B1014T001にΦ0.1 mmポリウレタン銅線×150ターンを一層巻きできる。150回巻とした場合→Ls=0.494×150²=11.1 mHとなり、完全に消磁するのにかかる時間Tdemagは
となる。Tdemag<Toffを十分に満たしているため、電流不連続モード(DCM)の動作が見込める。
➤ MOSFETの選定
NchパワーMOSFET TK10P50W(500 V, 9.7 A)を選んでみた。DPAKパッケージで小型化できそうというのと、耐圧も高く、オン抵抗も327 mΩと比較的小さい。プリント基板設計時はパッド面積を大きくし、サーマルビアを沢山打つことで放熱を改善した方が良さそう。
➤ RCDスナバ回路
RCDスナバ回路の役割は、一次側の漏れインダクタンスに溜まったエネルギーが行き場を失い、サージ電圧が発生してMOSFETが破壊されるのを防止することである。
今回使用するMOSFETの耐圧は500 Vなので、クランプ電圧Vclamp<250 Vを目標に設計を進める。最悪ケースを想定してトランスの結合度k=0.9となった場合、一次側の漏れインダクタンスはLlk=(1-k)×Lp=1.24 μH、反射電圧はVOR=28.8 V(=Np/Ns×(Vout+VD))となる。したがって、必要なキャパシタンスは
となる。今回はCsnub=100 pFとしてみた。
抵抗は1サイクル以内にキャパシタで吸収したエネルギーを放電する必要があるので、次式を満たす必要がある。
今回は、Rsnub=33 kΩとした。
➤ RCスナバ回路
RCスナバ回路をMOSFETのドレイン―ソース間に入れることにした。RCDスナバはドレイン電圧をクランプするのに対し、RCスナバは高周波成分のリンギングを抑える目的で入れる。ここの設計値は、シミュレーション結果を見ながら良さそうな値を選ぶことにした。今回はCsnub2=100 pF、Rsnub2=330 Ωとしてみた。
➤ 入力コンデンサ
瞬時的な電流の引き込みに対応するため、低ESRのコンデンサを使用する。OS CON, 25SEPF330M(25 V, 330 μF)が良さそうである。また、入力側にLseries=22 μHとRseries=1 Ωを入れることでリプルノイズを外部に漏れにくくする。
➤ 倍電圧整流回路
電圧を2倍(850 V→1700 V)に昇圧する。1700 V、4 mA出力時、Dout1には8 mAの実効電流が流れることになる。ESJA57-04の定格が5 mAのため、2個並列にして電流を分散させることにする。
シミュレーション
以下、Ngspiceによるシミュレーション結果とスクリプトを記載する。
結果
図2に出力電圧の波形を示す。10 msほどで目標電圧に達することが分かる。デューティ比D=0.388のとき、ちょうど出力電圧1700 Vが得られる。
図2:出力電圧の波形(1700 V)
図3に入力電流の波形を示す。定常時12 V, 0.73 Aなので、電力効率はη=6.8 W/(12 V×0.73 A)=0.77ということになる。良さげ。
図3:入力電流の波形(12 V)
図4にトランスの一次電流Ipと二次電流Isの波形を示す。一次電流の最大値Ip,max=3.5 Aに達している。電流不連続モード(DCM)の波形になっていることが確認できる。(波形がガタガタしているのは何故なのだろうか...)
図4:一次電流Ipと二次電流Isの波形
図5にB-Hカーブの軌跡を示す。Bmax~180 mTに留まっており、磁気飽和していないことが確認できる。設計値と比べBmaxが大きいが、これは目標電圧に到達する前の過渡応答において、電流連続モード(CCM)に近い挙動となるためだと推測する。
図5:B-Hカーブ
図6にRCDスナバ回路のキャパシタにかかる電圧波形を示す。シミュレーションではトランスの結合係数k=0.95としているため、設計値(k=0.9)よりも低いクランプ電圧となっている。
図6:RCDスナバにかかる電圧波形
図7に出力ダイオードDout1, Dout2(ESJA57-04)の電流波形を示す。Dout1は2個並列にしたため、電流が半分になって実効値5 mAに収まる。ピーク電流は60 mA程度なので定格電流0.5 Apeakに収まる。
図7:Dout1, Dout2の電流波形
下にNgspiceのスクリプトを載せる。トランスモデルは、以前作成した磁気飽和モデル(磁気飽和するトランスをモデル化してみた - ペEの日記)を使用している。
File: flyback_v2.spice
flyback_v2.spice
.param D=0.388 TR=1ns TF=1ns PER=10us
V_in n01 0 dc 12
V_control n06 0 pulse(0 12 1us {TR} {TF} {D*PER} {PER})
XL_series n01 n02 L_MODEL ind=22u res=60m cap=20p
XR_series n01 n02 R_MODEL res=1
XC_decoup n02 0 C_MODEL cap=330u res=14m
XT_xfmr n02 n03 n08 0 T_MODEL
XM_nmos n03 n05 0 TK10P50W_G0_00
XR_nmos_g n05 n06 R_MODEL res=100
XD_snub n03 n04 ES1J
XC_snub n04 n02 C_MODEL cap=100p res=10m
XR_snub n04 n02 R_MODEL res=33k
XC_snub2 n03 n07 C_MODEL cap=100p res=10m
XR_snub2 n07 0 R_MODEL res=330
XD_out1a 0 n09 ESJA57_04
XD_out1b 0 n09 ESJA57_04
XD_out2 n09 n10 ESJA57_04
XC_out1 n09 n08 C_MODEL cap=0.01u res=10m
XC_out2 n10 0 C_MODEL cap=0.01u res=10m
XR_load n10 0 R_MODEL res={1700V/4mA}
.subckt R_MODEL 1 2 res=0
R0 1 3 {res}
Viprobe 3 2 dc 0
.ends
.subckt C_MODEL 1 2 cap=1 ind=0 res=0 tand=0 fnom=50
C0 1 3 {cap}
Lser 3 4 {ind}
Rser 4 5 {res}
Viprobe 5 2 dc 0
.ends
.subckt L_MODEL 1 2 ind=1 res=0 cap=0
L0 1 3 {ind}
Cpar 1 3 {cap}
Rser 3 4 {res}
Viprobe 4 2 dc 0
.ends
.subckt T_MODEL 1 2 3 4
+ N1=5 N2=150 k=0.95
+ Ae=97.1e-6 mu_r=1670 Ms=3.18e5 le={78.4e-3+1670*0.2e-3}
+ res1=0.1 res2=15
N0 p1 n1 p2 n2 B_node H_node T_CORE
Rser1 1 p1 {res1}
Rser2 3 p2 {res2}
Viprobe1 n1 2 dc 0
Viprobe2 n2 4 dc 0
.model T_CORE transformer (
+ N1={N1} N2={N2} k={k} Ae={Ae} le={le} mu_r={mu_r} Ms={Ms} )
.ends
.include 'TK10P50W/TK10P50W_G0_00_PSpice_rev1.lib'
.include 'ES1J/ES1J (SPICE MODEL).LIB'
.subckt ES1J 1 2
D0 1 3 ES1J
Viprobe 3 2 dc 0
.ends
.subckt ESJA57_04 1 2
D0 1 3 ESJA57_04
Viprobe 3 2 dc 0
.model ESJA57_04 D (
+ is=5.592E-04 n=1.281E+02 rs=2.377E+02
+ bv=6.600E+03 ibv=1.000E-06 nbv=3.380E+02
+ ikf=0.000E+00 ikr=1.800E-11 jtun=0.000E+00
+ ntun=3.000E+03 xtitun=3.000E+00 cjo=2.200E-12
+ fc=5.000E-01 m=2.000E-02 vj=1.000E+00
+ tt=2.400E-07 eg=1.110E+00 xti=3.000E+00
+ tnom=2.700E+01 )
.ends
.control
pre_osdi 'transformer/transformer.osdi'
set color0=white color1=gray color2=red color3=blue color4=green color5=black
set wfont='DejaVu Sans Mono'
set wfont_size=12
set xbrushwidth=1
tran .1us 20ms
plot v(n10)
plot -i(v_in)
plot i(v.xt_xfmr.viprobe1) 10*i(v.xt_xfmr.viprobe2) xlimit 19.98m 20m ylimit -1 5
plot v(xt_xfmr.B_node) vs v(xt_xfmr.H_node) retraceplot
plot v(n04,n02) xlimit 19.98m 20m ylimit -20 200
plot i(v.xd_out1a.viprobe) i(v.xd_out2.viprobe) xlimit 19.98m 20m ylimit -0.1 0.1
.endc
.end