ArduinoやESP32などのマイコンを使って、DCモーターを動かしてみましょう。
DCモーターは電源をつなぐだけで回転しますが、マイコンから制御する場合は少し工夫が必要です。
この記事では、
- DCモーターの基本的な仕組み
- マイコンにDCモーターを直接接続できない理由
- モータードライバの役割
- DCモーターを正転・逆転させる仕組み
- マイコンからDCモーターを制御する方法
を順番に解説します。
DCモーターとは
DCモーターは、直流電源を加えることで回転するモーターです。
乾電池などをDCモーターにつなぐと回転し、電源の極性を反対にすると回転方向も反対になります。
たとえば、モーターの2つの端子をA、Bとすると、
- A側を+、B側を- → 一方向に回転
- A側を-、B側を+ → 反対方向に回転
となります。
つまりDCモーターを正転・逆転させるためには、モーターに流れる電流の向きを切り替える必要があります。
マイコンにDCモーターを直接接続してはいけない
ArduinoやESP32などのGPIOに、DCモーターを直接接続して動かすことは避けましょう。
GPIOはLEDやICなどを制御するための信号を出力する端子であり、モーターを駆動するための大きな電流を供給する用途には向いていません。
また、モーターはコイルを使った部品です。
回転中のモーターを停止させると逆起電力が発生するため、適切な対策をせずマイコンへ直接接続すると故障につながる可能性があります。
そこで使用するのがモータードライバです。
基本的には、
マイコン → モータードライバ → DCモーター
という構成にします。
マイコンはモーターそのものを駆動するのではなく、モータードライバに対して「どちらの方向に回すか」といった制御信号を送ります。
実際にモーターを駆動するのはモータードライバです。
モータードライバとは
モータードライバは、マイコンから送られてきた制御信号に応じてモーターを駆動するための回路です。
DCモーターでは主に、
- 正転
- 逆転
- 停止
- 速度制御
などを行います。
DCモーターの正転・逆転に使われる代表的な仕組みがHブリッジ回路です。
HブリッジでDCモーターを正転・逆転する
DCモーターは、流れる電流の方向を反対にすると回転方向も反対になります。
Hブリッジ回路では、複数のスイッチング素子を切り替えることで、モーターに流れる電流の方向を変更します。
これによって、マイコンからの信号だけでDCモーターを正転・逆転できるようになります。
モータードライバによって仕様は異なりますが、2つの入力端子を使うタイプなら、基本的な考え方は次のようになります。
| 入力A | 入力B | 動作 |
|---|---|---|
| LOW | LOW | 停止 |
| HIGH | LOW | 正転 |
| LOW | HIGH | 逆転 |
HIGHとLOWを切り替えるだけなので、マイコンからも簡単に制御できます。
マイコンからDCモーターを制御してみよう
それでは、実際にプログラムからDCモーターを制御してみます。
ここでは例として、モータードライバの2つの入力端子をGPIO 7とGPIO 6へ接続したものとします。
Arduino環境なら、基本的なプログラムは次のようになります。
const int MOTOR_A = 7;
const int MOTOR_B = 6;
void setup() {
pinMode(MOTOR_A, OUTPUT);
pinMode(MOTOR_B, OUTPUT);
}
void loop() {
// 正転
digitalWrite(MOTOR_A, HIGH);
digitalWrite(MOTOR_B, LOW);
delay(2000);
// 停止
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, LOW);
delay(1000);
// 逆転
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, HIGH);
delay(2000);
// 停止
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, LOW);
delay(1000);
}
実行すると、
正転 → 停止 → 逆転 → 停止
を繰り返します。
プログラム自体は非常に単純ですね。
重要なのは、マイコンがモーターを直接動かしているのではなく、GPIOからモータードライバへ信号を送り、モータードライバがモーターを駆動していることです。
DCモーターの速度も制御できる
ここまではHIGHとLOWを使って、モーターを回す・止めるという制御をしました。
さらにマイコンの**PWM(Pulse Width Modulation)**を利用すると、DCモーターの回転速度も変えられます。
たとえば、
- デューティ比を小さくする → 遅く回転
- デューティ比を大きくする → 速く回転
といった制御が可能です。
単純なON/OFFから一歩進んで、モーターの速度までプログラムから変えられるようになります。
PWMを使ったDCモーターの速度制御については、別の記事で詳しく解説します。
2つのDCモーターを使えば車も作れる
DCモーターを2つ用意して、それぞれ独立して制御すると、モーターカーを作ることもできます。
たとえば左右に1つずつモーターを配置すると、
| 左モーター | 右モーター | 車の動き |
|---|---|---|
| 正転 | 正転 | 前進 |
| 逆転 | 逆転 | 後退 |
| 停止 | 正転 | 左方向へ旋回 |
| 正転 | 停止 | 右方向へ旋回 |
といった制御ができます。
さらに左右のモーターの速度を個別に変えれば、より滑らかに方向を変えることもできます。
このように、
GPIOによるON/OFF制御
↓
正転・逆転
↓
PWMによる速度制御
↓
2つのモーターを独立制御
↓
モーターカー
と発展させていくと、マイコンによるモーター制御を段階的に理解できます。
実際にDCモーター制御を学んでみよう
DCモーター制御では、プログラムだけでなく、
- マイコン
- モータードライバ
- DCモーター
- モーター用電源
- 配線
などのハードウェアも必要になります。
特に初めてモーター制御を行う場合、
「プログラムが間違っているのか」
「配線が間違っているのか」
「電源に問題があるのか」
と、動かない原因を切り分けるのが難しいところです。
クミタテでは、実際にマイコンを使ってDCモーター制御を学べるKUMITATE-MOTORを用意しています。
KUMITATE-C3と組み合わせて、
- DCモーターの正転・逆転
- 2つのモーターの独立制御
- PWMによる速度制御
- モーターカーの制御
などを実機で学習できます。
まとめ
今回は、マイコンからDCモーターを制御する基本的な仕組みを紹介しました。
ポイントをまとめると、
- DCモーターは電流の方向によって回転方向が変わる
- マイコンのGPIOにDCモーターを直接接続しない
- モータードライバを介してDCモーターを駆動する
- Hブリッジによって正転・逆転を切り替えられる
- PWMを使えば回転速度も制御できる
- 2つのモーターを独立制御すればモーターカーにも発展できる
となります。
まずは1つのDCモーターを正転・逆転させるところから始めてみましょう。
次のステップでは、PWMを使ってDCモーターの回転速度を変える方法を解説します。

