DCモーターのPWM制御

                                                        2021/07/25


1.はじめに
 ブラシ付きDCモーター(以下モーターと呼ぶ)のPWM制御について述べたいと思います。
PWM制御することで、モーターのパワー、回転速度を可変することが可能となります。
逆起電力とか回生電力などについて、誤った理解をしている方も多くいるようでしたので、自分の頭の中を整理するつもりで解説したいと思います。
もし、私の理解が間違っているところがあれば、ご指摘いただければ幸いです。

 モーターは、導線が鉄心に巻かれた構造をしているので、電子部品の1つであるインダクタ(コイル)としての性質を持ちます。
一方、モーターは、回転させると発電することから発電機としての側面も持っていることがわかります。
モーターをPWM(スイッチング)制御するときに、これら2つの性質が合わさって現れ、しかも、これら2つの性質について、どちらも逆起電力、回生電力などの言葉が使われるので、より混乱しやすいようです。
モーターのインダクタとしての性質と発電機としての性質、この2つの性質は、分けて考えるとわかりやすくなるかと思います。
まずは、インダクタとしての性質をみていくことにしましょう。

2.モーターのインダクタとしての性質
 インダクタは、一般にフェライトコア(鉄心)等に導線を数多く巻いた構造をしています。(コアのない空芯コイルもある)
特にインダクタとして作られていなくても、鉄心に導線が巻かれたものは、インダクタの性質を持ち、代表的なものに、メカニカルリレーやモーターなどがあります。
インダクタの重要な性質は、「電流の変化を妨げる」ということです。
具体的には、電流が流れていないインダクタに電流を流そうとすると電流が流れるのを阻止しようとしますし、インダクタに電流が流れているときは、電流を遮断しても今までと同じ電流を流そうとします。
具体的な例として、回路シミュレータを使って解析してみることにします。
モーターはRS380クラスを想定し、100μHのインダクタとしました。
下図に、モーターの単純化した等価回路を示しますが、等価回路にある1Ωの抵抗は、モーターのブラシや巻線の抵抗成分を合計した等価抵抗です。



では、電源電圧を10Vとして、通電中のモーターのスイッチをOFFしてみましょう。(下図参照)
シミュレーション結果では、スイッチOFFの瞬間にマイナスのスパイク状の電圧が現れています。この発生する電圧のことを逆起電力と言いますが、あまり適切な表現とは思えないので、
ここでは敢えて逆起電圧と言うことにします。(後に出てくるモーターの回転運動に由来する逆電圧と区別するため、「インダクタンス由来の逆電圧」と呼ぶことにする)
グラフのレンジを振り切っていますが、拡大してみるとスパイク電圧は650万Vに達していました。
現実のモーターやリレーでは、容量成分や絶縁抵抗の関係でそれほどの高電圧にはなりませんが、それでも数10〜数100Vの高電圧が発生すると言われています。



では何故、高い逆電圧が発生するのでしょうか?
その理由を説明したいと思います。
下図の回路のようにインダクタと並列に抵抗を取り付けた場合はどうなるでしょうか?
抵抗値は、インダクタ抵抗と同じ1Ωとします。
インダクタにはスイッチOFF直前まで10Aの電流が流れていたのですから、スイッチがOFFになってもインダクタはスイッチOFF直前と同じ電流を流そうとします。
先程の例では電流を流すルートがありませんでしたが、 今度は電流が流れるルートがあります。つまり、スイッチOFF直前の電流(10A)が並列接続された抵抗を流れたのです。この電流を回生電流と呼びます。
1Ωの抵抗値に10Aの回生電流が流れたのですから、抵抗の両端には、10Vの電圧が現れます。
逆起電力なんて言われていますが、これはインダクタの両端の電圧を観測したからそう見えるだけで、電流の流れる方向がスイッチOFFの前後で逆転したのではありません。



今度は、抵抗の値を10Ωにしてみましょう。
今度は、10A*10Ωで、100Vのマイナス電圧が発生しています。
もうおわかりですね。
並列接続された抵抗値が大きいほど発生するマイナス電圧は高くなります。
もし、並列接続する抵抗がなければ(無限大の抵抗を並列接続した考える)、発生する電圧は10A*無限大となり、理論上は無限大の電圧が発生するのです。
インダクタはスイッチOFF直前の電流を流し続けただけなのです。
もう1つ気づいてほしいことがあります。それは、マイナス電圧が発生している(インダクタンス由来の回生電流が流れている)時間幅です。
電圧が高くなるほど電圧発生の時間幅が狭くなっています。
スイッチOFF後にインダクタが電流を流すエネルギー源は、インダクタに蓄えられた磁気エネルギーです。
高い電圧を発生させる方が、大きなエネルギーを消費ことになるので、逆起電圧発生時間が短くなるのです。
この時間が長いものをSlow Decay、短いものをFast Decayと呼びます。
もし、スイッチOFF直後にモーターの両端をショートした場合は典型的なSlow Decayとなり、最も長い時間、インダクタンス由来の回生電流が流れ続けてることになります。



 シミュレーションではスイッチを使いましたが、実際のスイッチング回路では、トランジスタやMOSFETなどの半導体スイッチがよく使われます。発生する逆電圧が高すぎるとスイッチ素子を壊してしまうことになります。
発生する逆電圧を抑制するには、スイッチがOFFした瞬間にインダクタに流れる電流のルートを作ってあげればよいことになります。
抵抗を並列接続しても良いのですが、モーターをONしている時にも、無駄な電流が並列抵抗を流れてしまいます。
このような用途に、とても都合の良い部品があります。それはダイオードです。
ダイオードを使ったインダクタンス由来の逆起電圧防止回路とシミュレーション結果を下図に示します。



 シミュレーション波形の後半に発振(振動)波形が見られますが、逆電圧はダイオードの順方向電圧降下の−1V以内に収まっています。
OFFした瞬間に発生する高電圧をダイオードが吸収しているのではありません。OFFした瞬間でも電流が流れるルートがあったので、スイッチOFF直前の電流がダイオードを流れただけなのです。
 ちなみに、このような用途に使われるダイオードを日本語では還流ダイオードと言いますが、英語ではフリーホィール・ダイオードとかフライホィール・ダイオードとか呼ばれます。
フリーホィール・ダイオードとフライホィール・ダイオードではどちらが正しいのか調べてみたところフリーホィール・ダイオードが正しいようです。
フリーホィールは、自転車に使われている部品で、爪のついた歯車で、自転車のペダルを漕ぐと車輪に力が伝わりますが、惰性で走行中や下り坂では、車輪の回転はペダルに伝わらない構造になっています。
フライホィールは、自動車のエンジンなどに付いているはずみ車のことで、エンジンの回転をなめらかにする作用があります。エンジンはシリンダ内で爆発を繰り返して回転している訳ですが、爆発から次の爆発まで
はずみ車に蓄えられた運動エネルギーを使って回転しているとも言えます。
PWM制御では、モーター通電時にインダクタに蓄えられた磁気エネルギーが次のモーターONまでの間に使われるので、フライホィール・ダイオードという表現もあながち間違ってはいないように思えます。
 モーターに並列に接続された還流ダイオードは、モーターブレーキとして作用していると勘違いしやすいのですが、むしろ逆でモーターを回転させる方向に働いており、エネルギーの有効活用なのです。
以上で、モーターのインダクタとして現れる現象について述べました。
この現象は、モーターが回転していても、回転していなくても起きる現象であることに注意してください。


3.モーターの回転運動としての性質
 次にモーターの回転運動に伴って現れる現象について述べます。
DCモーターに電源を接続すれば、モーターは回転します。
逆にモーターを強制的に回転させるとモーターには電圧が発生しますので、モーターは発電機にもなることを実感できます。
モーターと発電機は全く別の動作に見えますが、実は、モーターに電源を接続してモーターを回転させているときにも、モーターは発電しています。
モーターの回転数が高ければ高いほど発電する電圧は高くなり、このモーター内部に発生する電圧のことを逆起電力と呼びます。(ここでは、モーターの回転運動に由来する逆起電圧と呼ぶことにします)
逆起電圧の逆とは、電源電圧に対して逆という意味だと思います。つまり、電源電圧に逆らうように発生する電圧という意味です。
 モーターが無負荷で回転していれば、回転運動に由来する逆起電圧は電源電圧とほぼ同じくらい高くなりますが、電源電圧を超えることはなく、電源電圧より少し低いくらいです。
モーターが無負荷で回転している場合は、モーターの回転が高くなります。すると、モーター内で発生する回転運動に由来する逆起電圧が高くなり、電源電圧と逆起電圧の差が小さくなって、
モーターのコイル加わる電圧が小さくなり、結果としてモーターに流れる電流は小さくなるのです。
 逆に、モーターとして回転しているときに、回転軸に負荷をかけるとモーターの回転数は下がってきます。回転数が下がると回転運動に由来する逆起電圧も小さくなります。
すると、モーターコイルにかかる電圧は大きくなり、結果としてモーターに流れる電流が増加します。
極端な場合ですが、モーターの回転軸がロックした場合、モーターの回転運動に由来する逆起電圧はゼロになり、電源電圧がそのままモーターコイルにかかることになり、モーターに大きな電流が流れます。
回転運動に由来する起電圧のエネルギー源は、モーターの回転による運動エネルギーなので、電源スイッチをOFFしてもモーターは暫くの間、慣性で回り続け、回転が止まるまでモーターは発電し続けます。
注意してほしいのは、先程述べたモーターのインダクタンスに由来する逆起電圧とモーターの回転運動に由来する逆起電圧とでは、発生する電圧の向きが異なることです。(下図参照)



4.インダクタと回転運動を合わせた性質
 モーターに通電してる状態からOFFした時には、インダクタンス由来の性質と回転運動由来の性質の2つの側面があることを説明しました。
では、実際にモーターOFF時の電圧波形を見てみましょう。
回路シミュレータで電圧波形を示せればよかったのですが、回転しているモーターのモデルを作るのが難しかったので、実際にオシロスコープで観測して見ました。
回路は下図になります。モーターはRS380(無負荷)クラス、電源電圧は約3V、モーター両端には、15Ωの抵抗を接続してあります。
スイッチは、測定の関係でプラス側にしましたが、考え方は同じです。



下にオシロスコープの観測波形を示します。
スイッチOFF直後から、モーターの回転は低下していきます。それに伴って、回転運動に由来する電圧も低下していき、約400msec後、0(ゼロ)になっています。
この電圧波形は、モーターの発電機としての性質を表しています。
モーターは、通電をOFFしても暫くは惰性で回転を続けます。この回転するエネルギーが回転運動由来の逆起電圧発生の源です。
ところが、オシロスコープの時間レンジ100ms/divではインダクタンス由来の逆起電圧が見えません。



では、今度は、時間軸を1000倍の100us/divで観測してみました。(下図)
オシロスコープの時間軸レンジを拡大すると、なにやら逆起電圧波形が見えてきました。これが、インダクタンス由来の逆起電圧です。
先ほどの回転運動由来の逆電圧とインダクタンス由来の逆電圧では、発生している時間が大きく異ることと、発生する電圧の方向が異なることに注目してください。



この2つの現象、発生している時間があまりにも違いすぎてわかりにくいので、誇張した図にしてみました。(下図参照)
どちらも逆起電力と呼ばれながら、発生する電圧の方向が互いに反対なのは皮肉ですね。



5.Hブリッジ
DCブラシモーターを正転/逆転させるためには、Hブリッジ(フルブリッジとも呼ばれる)と呼ばれる回路構成が使われます。(下図参照)
基本的にHブリッジには、正転、逆転、ブレーキ、空転の4つのモードがあります。



下図において、モーターを正転(正転。逆転はあくまでも便宜上のものです)させる場合は、スイッチ1とスイッチ4をONします。(青矢印線は電流の流れを表します)
モーターを逆転させる場合は、スイッチ2とスイッチ3をONします。
モーターにブレーキをかける場合は、スイッチ2とスイッチ4(スイッチ1とスイッチ3をONでも良い)をONします。図のブレーキ電流の方向は正転からのブレーキをかけたときのものです。
正転時にスイッチ1をOFF(全スイッチOFFでもいい)すると発電による電流の流れるルートがないので、モーターは空転(フリー)のモードになります。
もちろん、摩擦等がありまので、空転はしばらくすると停止します。
 




 実際のHブリッジ回路のスイッチには、トランジスタやMOSFETがよく使われます。
下図にスイッチ素子に4つのNチャンネルMOSFETを使った回路を示します。
MOSFETの横にあるダイオードは、ボディーダイオードと呼ばれるもので、MOSFETの構造上必然的に付加されてしまうダイオードで、
邪魔な場合もありますが、うまく利用できる場合もあります。



5.1 HブリッジのPWM方式1
Hブリッジ構成の回路でPWM制御を行う場合、いくつかの方法があります。
正転も逆転も電流の方向が変わるだけですので、正転方向について考えてみることにします。
 まず1つ目の方法ですが、一番簡単な方法で、MOSFET1、(MOSFET4でも良い)を高速でON/OFFします。
そのときにON時間を可変することで、モーターの回転速度を制御できます。
今度は、この方式での、ON/OFFの瞬間の電流の動きを見ることにします。
OFFからONは、特に複雑な現象はありませんが、問題はONからOFFになる瞬間です。
下図において、MOSFET2とMOSFET3を常時OFFにして、MOSFET1とMOSFET4をONの状態からMOSFET1のみOFFにした瞬間の電流の流れを見てみます。
まず現れるのは、インダクタンスに由来して発生する回生電流です。(赤矢印線)
電流の流れですが、MOSFET4はONしていますから、電流はそのままMOSFET4本体を通過します。MOSFET2はOFFなので電流は流れませんが、ボディダイオードD2を通りモーターに戻ります。

モーター → MOSFET4(本体) → MOSFET(ボディダイオード D2) → モーター

このインダクタンス由来の回生電流は、モーターの回転運動に由来する回生電流と比較して短い時間で消滅します。



次に現れるのが、モーターの回転運動に由来による回生電流です。(下図参照)
この回生電流の流れるルートを探してみましょう。
左下のMOSFET2はOFFで、ボディダイオードD2も電流を阻止する方向ですので電流は流れません。
次にMOSFET1はOFFですが、ボディダイオードD1を流れることができそうです。
右上のMOSFET3はOFFでボディダイオードD3も電流を阻止する方向ですから、電流は流れません。
もう1つ電源を回るルートがありそうです。しかし、惰性で回るモーターが発電時に発生する電圧は電源電圧より低いため、電流は電源のプラスからマイナスに抜けることはできません。
結局のところ、回転運動に由来の回生電流は流れないことになります。電流が流れないということは、ブレーキ作用はなく、モーターは単に空転することを意味します。
この場合のPWM制御は、

 モーターON → 空転 → モーターON → 空転 →

を高速に繰り返していることになります。
このときの空転について補足ですが、OFFした瞬間にインダクタンス由来の回生電流が流れます(上図の赤矢印線)。
この電流はモーターの回転を持続させる方向に働きます。(間違えないでください。ブレーキではありません)



5.1 HブリッジのPWM方式2
 HブリッジにおいてPWN制御を行う別の方法について説明します。
ハーフブリッジドライバIR2302に代表される駆動方式です。
下図において、MOSFET2とMOSFET3をOFF、MOSFET1とMOSFET4をONの状態(正転)からMOSFET1をONからOFF、MOSFET2をOFFからONにする方法です。
切り替えの瞬間、MOSFET1とMOSFET2は同時にONになると電源短絡してしまうので、2つのMOSFETが同時にOFFになる時間(デッドタイム)が設けられているのが普通です。
この場合のモーターのインダクタンス由来の回生電流は、MOSFET4 → MOSFET2を通ってモーターに戻ります。(下図の赤矢印線)

モーター → MOSFET4(本体) → MOSFET(本体) → モーター

(MOSFETはONしている場合、ソースとドレインどちらの方向からでも電流は流れる。また、一般にMOSFETのON抵抗はボディダイオードよりインピーダンスが低いので、
ONしている場合は、電流はボディダイオードではなくMOSFET本体を流れる)



インダクタンス由来の回生電流が消滅した後は、モーターの回転運動由来の回生電流が流れます。(下図の緑矢印線)
この駆動方式についてですが、自分には、なかなか理解できませんでした。
何故なら、この緑矢印線の電流ループは、ブレーキモードそのものであり、車の運転に例えれば、アクセルとブレーキを交互に踏んでロスの大きな走行しているように思えたからです。
このPWM制御方式では、

 モーターON → ブレーキ → モーターON → ブレーキ →

ただ、この駆動方法は、典型的なSlow Decayとなるため、インダクタンス由来の回生電流が流れる時間がやや長くはなります。
そこで、PWMの周波数をある程度高くすれば、モーターの回転運動由来の回生電流が流れ出す前にモーターをONすることで、ブレーキ電流が流れることを回避できることになります。
 何故、このようなPWM制御を行うのかの推察ですが、インダクタンス由来の回生電力を最大限に利用できるメリットがあることと、ブートストラップ方式を採用しているケースが多いことではないでしょうか。
High側のMOSFETを駆動するためには、MOSFETのゲート電圧を電源電圧より高くする必要があります。この電源電圧より高い電圧を得る方法の1つとしてブートストラップがあります。
ブートストラップについての詳細説明は割愛しますが、ブートストラップ方式でMOSFET1(MOSFET3も同様)のゲートドライブ電圧を確保するためには、
MOSFET1とMOSFET2を交互にON/OFFのスイッチング動作させる必要があるのです。(連続ONにできない。)
以上の理由から、IR2302等のドライバICを使う場合、PWM周波数はある程度高くする必要がありそうです。



では、このPWM方式の周波数はどの程度にすればよいのでしょうか。
実際にオシロスコープで測定してみることにしました。下図にテスト回路を示します。
ドライバICはMIC4606-2で、IR2302と同じブートストラップ方式です。電流を測定するために0.1Ωの電流検出抵抗を付加しています。
モーターはRS380クラス、電源電圧は5V、PWMのon_dutyは50%、PWM周波数は100Hz、1kHz、10kHz、100kHzで測定してみました。



まずは、PWM周波数100Hz。(下図)
画面中央(0レベル)より上にあるときは正転電流で、画面中央より下に振れている部分は逆向きの電流(ブレーキ電流)が流れていることを表しています。
正転電流がすごくノイジーですが、これはモーターのブラシ接触によるものだと思います。
回転数は、5046rpm、電流は1.4Aでした。(無負荷なのに電流がとても大きい)
PWMの周波数が低いのもありますが、モーターが回転しているときの振動がとても大きかったです。これは、モーターにブレーキをかけながら回っているためと思われます。



次に、PWM周波数1kHz。(下図)
回転は、PWM周波数100Hzのときより滑らかになってきました。
しかし、まだブレーキ電流が流れているようです。
回転数は、6960rpm、電流は0.9Aでした。



PWM周波数10kHz。(下図)
スイッチング時、ヒゲ状のノイズが見られますが、この周波数でギリギリブレーキ電流が流れるのを回避できているようです。
回転数は、6900rpm、電流は0.3Aでした。



PWM周波数100kHz。(下図)
スイッチング時のヒゲ状のノイズとても大きいです、ブレーキ電流が流れ始めるよりも早く正転がONになるため、ブレーキ電流は流れていないようです。
回転数は、6210rpm、電流は0.22Aでした。



結論として、HブリッジでPWM制御(方式2)を行う場合、10kHz以上の周波数は必要なようです。
今回は、on_duty50%での結果でしたが、on_dutyがもっと小さい場合やインダクタンスの小さいモーターでは、10kHzでもブレーキモードに入ってしまいます。
まあ、ブレーキをかけながらの回転でもサーボモーターのように、停止、逆転を繰り返すような用途では、モーターの慣性による回りすぎを防ぐ効果はあるかと思います。