ゲート抵抗の選定のお話

# はじめに
はじめまして。
ロボコンが終わって今後の世代に役に立ちそうなものはないかなと思い、ゲート抵抗の下書きメモをTwitterに投稿したところ思っていたよりも反響があったため、どうせなら記事にしてしまおうという形で**Qiita**に投稿しました。（今回が初めての投稿です…）
今回ご紹介するのはタイトルから見て分かる通り、ゲート抵抗の選定のお話です。計算方法を調べてもよくわからない…資料がいっぱいあるけどどうしていいかわからない…そのような人向けのお話です。

ロボコンでモータードライバとかを作っているとゲート抵抗という名は必ず効くと思います。モータードライバに限らずMOSFETを使ってスイッチングする電子回路にとっては切っても切り離せない関係かなと思います。
今回はそのゲート抵抗についてのお話です。

# ゲートドライブ回路の基本
以下に**ゲートドライブ回路**の基本的な回路例を示します。
<img width="300" alt="スクリーンショット 2020-12-22 15.50.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/a6da9412-2658-a426-6fe6-a95075cf5884.png">

ここでゲート抵抗について説明します。

ゲート抵抗というのはこの回路の中で$Rg$に該当する抵抗のことを指します。
正直、おまじないみたいにMOSFETに行くつかの抵抗値を接続している人もいると思いますが、ここでは簡単に説明します。

ここの抵抗値が小さい場合はスイッチング時間が短くなります。しかし、リンギング（減衰振動）が発生する可能性があります。リンギングはMOSFETの発振やEMIノイズの原因になる可能性があります。
逆に抵抗値が高い場合はスイッチング時間が長くなり、スイッチング損失が増大し発熱します。モータードライバなどでは接続するゲートのタイミングによって短絡が起こる可能性があります。
なので最適な値の抵抗値を決めてあげる必要はあります。

これらの回路は様々な場所で使われており、モータードライバ、DCDCコンバーターなど基本的なスイッチング回路として使用されています。
以下に等価回路を示します。
<img width="400" alt="スクリーンショット 2020-12-22 15.59.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/fcfd9c21-8d8d-3851-9e4c-dd08485535d7.png">

MOSFETの入力の部分はコンデンサ(Cciss)と等価であり、内部に寄生抵抗(Rs)が存在します。
そこに、以下のようなゲートドライブの入力電圧波形である矩形波を入力すると、、、
<img width="500" alt="スクリーンショット 2020-12-22 20.54.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/7d19bbc7-28bb-0e4a-2d7b-c4d56c8520e1.png">

MOSFETに印加される電圧はRCのローパスフィルタ回路と等価であり以下のような波形となります。
<img width="500" alt="スクリーンショット 2020-12-22 20.57.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/f93bb255-d79b-a5b7-590a-b217f5175700.png">

<font color = "00ff7f">緑色</font>の波形が電圧波形、<font color = "0000ff">青色</font>の波形が電流波形です。
RC回路の波形である、ややなまった電圧波形、最初のON時がピークの電流波形となっています。

これらの特性から等価的に計算を行い、適切なゲート抵抗の値を決めることを目標とします。

# ゲート抵抗の決め方
ここから先ほどの波形を元にゲート抵抗の値を決めていきます。
ゲート抵抗の計算方法は実際に様々な計算方法がありますが、今回は**公式を導出してそこに代入ではなく**、ある程度の値を**予め選定しておきその中から選定する**という確認の計算に近いかもしれません。

今回使用するMOSFETは<font color = "red"> International Rectifier </font>社製の [**<font color = "red"> IRLB8721PBF </font>**](https://akizukidenshi.com/catalog/g/gI-06024/) というNch MOSFETを選びました。
秋月電子でも売っている、比較的低コストのNch MOSFETです。
以下に[データシート](https://akizukidenshi.com/download/ds/ir/IRLB8721PBF.pdf)の一部を示します。
![スクリーンショット 2020-12-22 23.14.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/6f58405b-8a8d-e709-7d90-3a5d0d800976.png)
ここで計算する上で重要な項目にマーカーを引きました。以下に説明します。

- Qg(Total Gate Charge)
トータルゲートチャージと言いMOSFETのゲートの総電荷量です。

- Rg(Gate Resistance)
MOSFETのゲートに存在する寄生抵抗です。
寄生抵抗なので、実際の計算に加算するのを忘れないように注意する必要があります。

- Ciss(Input Capacitance)
MOSFETの入力容量となっています。等価回路で置いた時に、ここがコンデンサの値となっています。


## MOSFETの閾値のお話
MOSFETは電子的なスイッチと置くことができ、ゲートに印加する電圧の割合によってMOSFETがONもしくはOFFとなるレベルが決まっています。
以下に、データシートの中の一部を示します。
<img width="700" alt="スクリーンショット 2020-12-22 23.35.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/000e3dc3-2111-36bd-62b5-d038f6ee1780.png">
この図は、メーカーがMOSFETのスイッチング時間の計測する際に使用した回路となっています。**Fig 14b.**の方の回路がMOSFETのONレベル、OFFレベルの割合となっており10%~90%の間の箇所は、右斜め上が立ち上がり時間で、左斜め下が立ち下がり時間となっています。つまり、MOSFETをHIGH(ON)にしたい場合、入力する電圧の90%以上になれば大丈夫ということになります。


## RC回路の過渡解のお話
過渡解と言われて、電子回路にある程度の知識がある方なら分かると思いますが、ここでは軽く説明します。

簡単なオームの法則などを用いた電子回路の抵抗値などの計算方法は、定常状態と呼ばれ**<font color = "red"> 一定条件下 </font>**に**<font color = "red"> 十分長時間 </font>**置かれた場合の回路内部の電圧・電流は一定の状態になります。その定常が前提の上で計算されるので時間が変化しても、電流・電圧の変化はありません。
一方、ここのタイトルにもある通り過渡解は、電気回路内のスイッチの開閉時、回路素子の値が変化する場合に**<font color = "red"> 定常状態から別の状態に移行（エネルギーの増減・変換） </font>**の過程を**<font color = "red"> 過渡現象 </font>**と言います。

今回は、前述したMOSFETに印加される電圧・電流波形は過渡状態に該当するので過渡解の式を元に計算を行っていきます。
回路の構成はRとCの直列の波形であり、RC回路の過渡解は広く知られており、Googleで検索するとたくさん出てくると思います。なので、今回は式の導出ではなく、式を引用し時定数の関係から導出しようと思います。[詳しく知りたい方はこちら(外部のサイトですが個人的には分かり易かったです。)](https://eleking.net/study/s-transient/str-transient-rc.html)

まずは、以下にRCの過渡状態における電流の式を示します。

```math

i(t)=\frac{E}{R}\times{e^{\frac{-1}{CR}t}}

```
これは、以下に示すような電流の波形となっています。
実際に流れる電流の量は、印加する電圧、抵抗値、容量で異なります。
<img width="500" alt="スクリーンショット 2020-12-22 22.52.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/0869b78c-a34f-235a-31c8-6468f2d68e99.png">
見ての通り電流が時間的に変化しているので過渡状態となっています。

続いて、時定数の関係性もお話しておきます。
RCの過渡状態における電流の式を示しましたが、以下の計算式はコンデンサと抵抗の積です。

```math

τ=CR

```
ただの積に見えますが、この値をグラフに表すと、以下のような関係性が現れます。
<img width="600" alt="プレゼンテーション1.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923397/9edf690c-d693-21ce-562d-590351818595.jpeg">
これは、RCの積と電圧との関係です。まず、一つ目のτは電圧が63.2%の値を示します。次にグラフにあるように86.5%、…となっていきます。
このτについての式を**<font color = "red">時定数</font>**と呼びます。

この時定数を用いて、MOSFETがオンになるレベルの割合を逆算し、Rの値を導出します。

## 実際に計算する定数を決めてみる。
この資料の前の方で「ある程度の値を**予め選定しておきその中から選定する**という確認の計算」と言いました。
なので、実際に計算をするにあたって定数の決定が必要です。

- MOSFET

前述しましたが、以下に簡単にまとめます。

|定数名|Parameter|Units|
|---|:---:|---|
|Rs|3.8|Ω|
|ciss|1077|pF|
|Qg|13|nC|


- ゲート電圧

ゲートに印加する電圧を決めます。

|定数名|Parameter|Units|
|---|:---:|---|
|Vg|12|V|

- スイッチング周波数

実際にMOSFETをスイッチングする周波数を決めます。
ここでは、20kHzとしました。これよりも多くても少なくても構わないですが、後で説明しますが周波数が高いと損失が大きくなります。なので、周波数の決定には注意が必要です。

|定数名|Parameter|Units|
|---|:---:|---|
|fsw|20|kHz|

- ゲート抵抗

今回決める抵抗値です。

|定数名|Parameter|Units|
|---|:---:|---|
|$Rg1$|5|Ω|
|$Rg2$|10|Ω|
|$Rg3$|22|Ω|
|$Rg4$|47|Ω|
|$Rg5$|100|Ω|

今回は5種類の抵抗をピックアップしました。
ゲートの寄生抵抗も存在するので、注意しましょう。

## 計算してみる

まずは、ゲートに印加する電圧から流れる最大の電流を計算します。

```math

Ig(max)=\frac{Vg}{Rg+Rs}

```
||Parameter|Units|
|---|:---:|---|
|$Ig1(max)$|1.36|A|
|$Ig2(max)$|0.87|A|
|$Ig3(max)$|0.50|A|
|$Ig4(max)$|0.24|A|
|$Ig5(max)$|0.12|A|

四捨五入します。

次にMOSFETがHIGH(ON)になる電圧の基準を決めます。
先ほど、MOSFETの閾値と時定数のお話をしたと思いますが、MOSFETは90%以上でHIGH(ON)、そこで、時定数が90%を超えるものを選択すると、3τ以降になります。今回は、3τの95%になるとMOSFETがHIGH(ON)になると考えます。

そこで、3τの時に流れる電流を求めます。
流れる最大の電流の時の95%が充電された後なので、その時に流れる電流は次式より導出できます。

```math

ig(3τ)=Ig \times (1-0.95)

```
||Parameter|Units|
|---|:---:|---|
|$ig1(3τ)$|0.018|A|
|$ig2(3τ)$|0.044|A|
|$ig3(3τ)$|0.025|A|
|$ig4(3τ)$|0.012|A|
|$ig5(3τ)$|0.006|A|

これで、3τ時間経過した時の電流を求めることができました。

ここで、RC回路の電流の式を変形させます。時間tについて導出します。

```math

i(t)=\frac{E}{R}\times{e^{\frac{-1}{CR}t}} \\
i(t)\times\frac{R}{E}=e^{\frac{-1}{CR}t} \\
\log (\frac{i(t)R}{E})=\frac{-1}{CR}t \\
\frac{-1}{CR}t=\log (\frac{i(t)R}{E}) \\
t=(-CR) \times \log (\frac{i(t)R}{E})

```
ここで、時間$i(t)$の時の電流がτなので、$ig(3τ)$を代入すると

```math

t=(-CR) \times \log (\frac{ig(3τ)R}{E})

```
となる。

ここに、決定した定数を代入します。


```math

t=(-1077 \times 10^{-12} (Rg+Rs)) \times \log (\frac{ig(3τ)(Rg+Rs)}{12})

```
ここに、先ほどの$Rg$,$Rs$,$ig(3τ)$を代入すると、

||Parameter|Units|
|---|:---:|---|
|$t(Rg1)$|0.028|uS|
|$t(Rg2)$|0.044|uS|
|$t(Rg3)$|0.077|uS|
|$t(Rg4)$|0.163|uS|
|$t(Rg5)$|0.331|uS|

これで、パルスが入ってからMOSFETがHIGH(ON)になるまでの時間が分かりました。

# 実際にゲート抵抗に使用する抵抗値を選定する
次にどの抵抗値を使用するかの選定を行います。

今回スイッチングする周波数を20kHzと決めました。
まずは、1パルス辺りの時間を導出します。

1パルスあたりの時間を$T$、周波数を$f$と置くと次式で計算することができます。

```math

T = \frac{1}{f}

```

以上の計算より$T = 0.00005(s)$と導出することができました。
つまり、50(us)となります。

この時におおよその立ち上がり時間の許容を設定します。

ここではArduinoが20kHzでPWM出力をした時を考えます。
ArduinoのPWMは256段階となっています。つまり、Arduinoは50(us)の時間の中に256段階で幅を変化させることが出来ます。
そこで、50(us)を256で割ってあげると１段階の時間を導出することが出来ます。
実際に計算してみると、0.195(us)となりました。

今回は、MOSFETが立ち上がる時間をこのArduinoの1段階の時間よりも短い時間で立ち上がることを目標にしたいと思います。

先ほどの計算で導出した結果より、0.195(us)よりも短いものを選ぶと、ArduinoのPWMの1段階の時間に収まっているので

$Rg1$、$Rg2$、$Rg3$、$Rg4$が収まっていることになります。
つまり、5Ω、10Ω、20Ω、47Ωが選択肢の中に入ります。

これらの選択肢の中から設計時に考えてあげる必要がありますが、実際はパターンのインダクタンス成分や寄生抵抗、入出力インピーダンスの関係から実際にこのような計算から簡単に決定することは不可能と言えます。
実際はオシロスコープで波形の計測を行いながら、ゲート抵抗の立ち上がり時間を確認する必要があります。もしモータードライバの設計などを行うのであれば短絡しないように慎重になって波形を確認することが重要です。

# さいごに
長々とゲート抵抗の選定について書いてきましたが、理論のお話なので最後は実測が必要不可欠です。
その中で、最初にどのようなゲート抵抗を選んで良いかわからないといった中で、選択肢があると設計もやり易いと思います。
今回はそのサポートになるような記事を書ければと思いました。

まだまだ文を書くのが慣れてないですが、このような記事を増やせていけたらと思います。

最後までありがとうございました。