Skip to content
RFrftools.io
Motor Control2026年2月27日12分で読める

DC モーター制御:PWM、ドライバー、エンコーダーの説明

PWMによるDCモータ制御の完全ガイド:適切なHブリッジドライバの選択、MOSFETのサイジング、エンコーダによるループの閉鎖

目次

はじめに

電圧を変えてDCモーターの速度を変えることは、紙の上では簡単に思えます。実際には、ネームプレート定格の10倍に急上昇する可能性のある突入電流、電源電圧と戦う逆起電力、持続負荷時に忍び寄る熱制限、フィードバックループを必要とする位置精度の要件を調整することになります。このガイドでは、内部で何が起こっているのかを実際に理解できるように、制御スタックの各部分を詳しく説明しています。


DC モーターモデル

ブラシ付き DC モーターは単なる抵抗器ではありません。電機子抵抗、インダクタンス、電圧源 (逆起電力) がすべて連動しています。回路モデルは次のようになります。

Vsupply=IaRa+LadIadt+VemfV_{supply} = I_a R_a + L_a \frac{dI_a}{dt} + V_{emf}

逆起電力はシャフト速度に比例します:Vemf=Ke⋅ωV_{emf} = K_e \cdot \omega。トルクは電流: T=Kt⋅IaT = K_t \cdot I_a から生じます。これらの定数 KeK_e と KtK_t は通常、データシートのどこかに埋もれています。多くの場合、混在した単位で、悲鳴をあげたくなります。

モーターが定常状態になり、インダクターがユーザーとの戦いを止めたら、次の式が簡略化されます。

ω=Vsupply−IaRaKe\omega = \frac{V_{supply} - I_a R_a}{K_e}

これにより、負荷がかかったモーターの速度が低下する理由がわかります。IaRaI_a R_a の用語は、実効電圧を食い尽くします。 0.5Ω を介して5Aを引っ張るモーターは、その場で2.5Vを失います。これは速度の低下に直接つながります。

DC モータ速度計算ツールを使用してこれらの関係を試してみて、電機子抵抗と負荷電流が最終回転数にどのように影響するかを確認してください。

PWM の基礎

PWM (パルス幅変調) は、1985年のように直列抵抗で電力を消費せずにモーター電圧を制御する方法です。電源のオンとオフを素早く切り替えます。モーターのインダクタンスがパルスを平滑化して有効な DC 電圧にします。

Veff=D×VsupplyV_{eff} = D \times V_{supply}

ここで、DD は0から1までのデューティサイクルです。12V で 75% のデューティを動作させると、9V の効率が得られます。簡単な計算ですが、周波数の選択はほとんどの人が理解している以上に重要です。

周波数長所短所
1–5 kHzスイッチング損失が低く、実装が容易鳴り響く泣き声は頭がおかしくなります
20–50 kHzサイレント操作、優れた効率中程度のスイッチング損失
> 100 kHz超高速のトランジェント応答EMIが悪夢になり、スイッチング損失が上昇する
経験則: 一般的なブラシ付き DC モーターでは 20 ~ 25 kHz を使用してください。これは可聴範囲を超えているため (煩わしいうなり声はありません)、スイッチング損失は妥当なままであり、ほとんどのマイクロコントローラ・タイマーはこれを簡単に処理できます。エンジニアが 100 kHz まで進み、速いほうが良いと考えて、放射 EMI のデバッグやゲート・ドライバのリンギングへの対処に何週間も費やすのを見たことがあります。 PWMデューティ・サイクル計算ツールを使うと、ドライバを爆破する前に実効電圧を計算し、ストール電流がどのようになるかを推定することができます。

H ブリッジドライバ

双方向制御にはHブリッジが必要です。モーター端子の極性を逆にできるように、4つのスイッチが配置されています。この名前は、文字通り H のように見える回路トポロジに由来しています。

ディスクリート対集積型

特に理由がない限り、DRV8833、TB6612、L298N などの統合ドライバ**が最適です。デッドタイム挿入 (ハイサイドとローサイドの両方の MOSFET で電源をショートさせないようにするため)、サーマルシャットダウン、過電流保護に対応しています。L298Nは古く非効率的ですが、実質的に破壊不可能です。学習には最適ですが、バッテリ駆動のプロジェクトにはひどいです。

ディスクリートMOSFETは、大電流を流す必要がある場合や効率を最大化したい場合に適しています。ゲートドライバ (ハイサイドのブートストラップ回路はデバッグするのが楽しい)、シュートスルーを避けるための注意深いPCBレイアウト、制御コードにおける適切なデッドタイム管理が必要です。ただし、効率の向上は現実のものです。ディスクリート設計では 95% 以上に達することがありますが、L298N は 70% を突破するのに苦労します。

MOSFETのセレクション

H ブリッジ用の MOSFET を選択する場合、次の 4 つの仕様が重要です。

  1. VDSV_{DS} — 余裕を持って電源電圧を超えなければなりません。VDS≥1.5×VsupplyV_{DS} \geq 1.5 \times V_{supply} を出発点として使用してください。そうしなければ、トランジェントや誘導スパイクが問題になります。
  2. IDI_D — 定格電流だけでなく、ピーク突入電流にも対応する必要があります。最低でも ID≥1.5×IinrushI_D \geq 1.5 \times I_{inrush} を適用してください。その突入電流は定常状態の10倍になることがあります。
  3. RDS(on)R_{DS(on)} — 常に低いほど良いです。これによって導通損失が決まります。10 mΩ 対50 mΩ のMOSFETは、高電流で大きな違いをもたらします。
  4. QgQ_g — ゲート電荷によって、切り替え速度とゲートドライバが消費する電力量が決まります。高周波 PWM では低いほど良いです。

MOSFET1個あたりの導通損失は、次の式で求められます。

Pcond=I2×RDS(on)×DP_{cond} = I^2 \times R_{DS(on)} \times D

ここで、DD は特定のスイッチがオンになっているデューティサイクルです。ハイサイドとローサイドの損失は、相補的なデューティサイクルで伝導されるため異なります。

Hブリッジ選択計算ツールは、ピーク電流要件と最小MOSFET定格を算出するのに役立ちます。モータドライバ電力計算ツールを使用して総消費電力を推定し、ヒートシンクが必要かどうかを確認してください。

突入電流と始動電流

ここで注目されるのは、定置型モーターに初めて電圧を印加したとき、逆起電力がゼロになることです。電機子抵抗が小さいことを除けば、印加電圧に対抗するものは何もありません。初期電流は次のようになります。

Iinrush=VsupplyRaI_{inrush} = \frac{V_{supply}}{R_a}

電機子抵抗が 0.5Ω のモーターが12Vで動作しているとしましょう。突入電流は24Aです。ただし、モーターのネームプレートには連続2Aと記載されています。これは12倍の乗数です。ドライバーは魔法の煙を出さずに処理する必要があります。

実際に効果のある緩和戦略:
  • PWM デューティサイクルのソフトスタート — 100 ~ 500 ミリ秒かけて 0% から目標値までランプアップシンプルで効果的で、コストはわずか数行のコードしかかかりません。
  • 電流制限コントローラを使用する — DRV8434のような部品には、ピーク電流を自動的に制限する電流チョッピングが組み込まれています。
  • 定格電流ではなく、突入電流に合わせてHブリッジのサイズを設定してください — これは譲れません。信頼性を求めるなら、2A モータに 20~30A 対応のドライバが必要です。

ほとんどのエンジニアはソフトスタートをスキップし、なぜドライバーが死に続けるのか疑問に思います。あのエンジニアになってはいけない。


クローズドループ制御用エンコーダ

オープンループ PWM 制御は、ファンやポンプなど、正確な速度や位置を気にしない用途に適しています。ロボット工学、CNC、位置制御を含むあらゆるものなど、精度が必要なときには、エンコーダからのフィードバックが必要です。

エンコーダの種類

光学式インクリメンタルエンコーダは、スロット付きディスクとフォトインタラプタを使用してAB直交パルスを生成します。最も一般的なタイプで、1回転あたり100~10,000パルス (PPR) で使用できます。信号はきれいで、分解能も良好ですが、ほこりや振動は嫌いです。 磁気式エンコーダはホール効果センサーと磁化リングを使用します。汚染や衝撃に対する耐性が大幅に向上しました。これらは産業用モーターや自動車用途に使われています。通常、解像度は光学式よりも低くなりますが、光学式エンコーダが即座に停止するような環境でも使用できます。 アブソリュートエンコーダは実際のシャフト位置をデジタルワードとして出力します。カウントは不要で、電源投入後のホーミングシーケンスも必要ありません。ほとんどのプロジェクトでは高価でやり過ぎですが、望遠鏡のマウントや産業用ロボットなどのマルチターンの位置追跡には欠かせません。

直交デコーディング

2 つのチャネル A と B は 90 度位相がずれます。両方のチャンネルの立ち上がりエッジと立ち下がりエッジの両方を観察すると、ベース PPR の 4 倍の分解能が得られます。

CPR=4×PPR\text{CPR} = 4 \times \text{PPR}

1000 PPRのエンコーダでは、1回転あたり4000カウントが得られ、これは0.09°の角度分解能になります。回転方向は、どのチャンネルがリードするかによって決まります。A が B をリードすると前に進み、B が A をリードすると後退します。

ほとんどのマイクロコントローラには、これを自動的に処理するハードウェア直交デコーダ周辺機器が搭載されています。割り込みのあるソフトウェアで実行しようとすると、数千RPMを超えるカウントが欠落し始めます。

エンコーダ分解能計算ツールを使用して、カウンタが処理する必要がある実際のCPR、角度分解能、最大パルス周波数を計算してください。

PID スピードコントロール

エンコーダーからのフィードバックで実際のシャフト速度がわかったら、PID コントローラーでループを閉じることができます。古典的な PID 方程式:

u(t)=Kpe(t)+Ki∫e(t) dt+Kdde(t)dtu(t) = K_p e(t) + K_i \int e(t)\,dt + K_d \frac{de(t)}{dt}

ここで、e(t)=ωsetpoint−ωmeasurede(t) = \omega_{setpoint} - \omega_{measured} は速度エラーです。

KpK_p という比例項を使うと、誤差に比例した即時応答が得られます。積分項 KiK_i は、時間の経過とともに誤差を累積することで定常誤差を排除します。微分項 KdK_d は、変化率に応答して振動を減衰させます。この3つをうまく組み合わせることは、科学というよりはむしろ芸術です。

チーグラー・ニコルズ・チューニング

ジーグラー・ニコルス法は、開ループステップ応答に基づく実用的な出発点となります。完璧とは言えませんが、ランダムに推測するよりはましです。

  1. ステップ入力 (PWM が 0% から 50% になるなど) を適用し、モーターの速度応答を測定します。
  2. 3 つのパラメーター (プロセスゲイン KK、デッドタイム LL、および時定数 τ\tau) を抽出します。
  3. 初期 PID ゲインの計算:
- Kp=1.2τ/(K⋅L)K_p = 1.2\tau / (K \cdot L) - Ki=Kp/(2L)K_i = K_p / (2L) - Kd=Kp×0.5LK_d = K_p \times 0.5L

これらは最適とは言えませんが、大まかな場に連れて行ってくれます。そこから、経験的にチューニングします。振動が発生するまで KpK_p を増やし、50%オフにしてから、KiK_i と KdK_d を好みに合わせて調整します。

PID チューニング計算ツールは、測定したステップ応答パラメーターから初期ゲインを計算します。これにより、計算を手作業で行い、午前 2 時に算術エラーを起こす必要がなくなります。

熱管理

モーターは抵抗損失により巻線に熱を発生させます: P=I2RaP = I^2 R_a.ドライバはMOSFETの伝導損失から熱を発生させます: P=I2RDS(on)P = I^2 R_{DS(on)}。長時間熱くなりすぎると、熱劣化や故障の原因になります。

動作温度は次のようになります。

Tmotor=Tambient+Ploss×RθT_{motor} = T_{ambient} + P_{loss} \times R_{\theta}

ここで、RθR_{\theta} はモーターケースから周囲までの熱抵抗です。通常、この数値はデータシートに記載されていますが、既知の電力でモーターを稼働させ、熱電対で温度上昇を確認することで経験的に測定することもできます。

ここで気になるのは、銅の巻線抵抗は温度とともに1°Cあたり約 0.39% 増加し、周囲温度よりも 50°C 高いモーターは巻線抵抗が約 20% 高くなるということです。つまり、同じ電流でもトルクが小さくなるため、トルクを維持するためにより多くの電流が必要になり、より多くの熱が発生します。サーマルリミット近くで走っていると、悪循環になります。

データシートでモーターの熱ディレーティング曲線を確認してください。ほとんどのモーターはケース温度が100°C前後でディレーティングを開始し、150°Cで完全にディレーティングされます。高負荷で連続運転する場合は、強制空冷または大型のモーターが必要です。


まとめ

DC モーター制御を正しく行うには、システム全体を理解する必要があります。

  1. モーターの適切なモデル化 — V=IR+KeωV = IR + K_e\omega を使用して、無負荷時の仕様だけでなく、負荷がかかったときの速度と電流を予測してください。
  2. 実際のドライバのサイズ設定 — ネームプレート定格ではなく、突入電流 (定格電流の5~10倍) を考慮した設計
  3. PWM周波数を慎重に選択してください — 20~25 kHzは、ほとんどのアプリケーションにおいて無音と効率を実現する最適な条件です。
  4. 精度が必要なときにフィードバックを追加 — 直交エンコーダは 4 倍の解像度と方向センシングを実現
  5. PID コントローラーの調整 — チーグラー・ニコルスから始めて、実際のシステム応答に基づいて調整してください
  6. 温度制限を無視しないでください — ピーク負荷ではなく、最大連続負荷時のモーターとドライバーの温度を計算します。

機能するモーター制御システムと確実に機能するモーター制御システムの違いは、これらの詳細を適切に処理できるかどうかにかかっています。生産に取り掛かる前に、すべてを最悪の状態に合わせてサイズ調整し、マージンを増やし、極端な温度でテストしてください。

よくある質問

一般的なブラシ付き DC モーターには 20 ~ 25 kHz を使用してください。この周波数は、ノイズを避けるために可聴範囲より高く、スイッチング損失を適度に抑え、ほとんどのマイクロコントローラタイマーで簡単に処理できます。
電機子抵抗により電圧降下 (I_a × R_a) が発生し、速度に使用できる実効電圧が低下するため、負荷がかかったモーターは減速します。たとえば、 0.5Ω を介して5Aを引っ張るモーターは2.5Vを失い、RPMを直接低下させます。
逆起電力は、電源電圧に対抗するシャフト速度 (V_emf = K_e × ω) に比例して生成される電圧です。これは電機子抵抗とインダクタンスと並んでモーターの回路モデルの一部です。
モータの実効電圧は、デューティ・サイクルに電源電圧 (V_eff = D × V_supply). を掛けたものに等しく、12V電源でのデューティ・サイクルが 75% の場合、モータに9Vの実効電圧を供給します。

関連記事