DCモーターは電圧をかければ回りますが、回転方向を変えたり回転速度を変えたりする場合は駆動電圧を変動させる必要があります。
しかしながら、例えば4輪駆動のラジコンカーを作る場合は4つのDCモーターを制御しなければなりません。1つずつ上記のような回路を組んでいくとやや煩雑になってしまいます。
モーターコントローラを使いましょう
そこで、簡素な接続でDCモーターを制御することができるモジュールである、モーターコントローラを使ってよりシンプルにしましょう。
9VのDCモータを駆動する際にこちらのL298Nデュアルモーターコントローラーをおすすめします。駆動電圧が5V~35Vとかなり幅が広いので、多くのDCモーターに対応することが可能かと思われます。
概要 DCモータの制御をすることが可能なコントローラモジュールです。 1つのコントローラで2つまでのDCモータを制御することが可能です。 仕様 ロジック電源電圧 5V ロジック電源電流 0-36mA 駆動電圧 5-35V 駆動電流(最大値) 2A 最大電力 25W 動作温度 -25℃ ~ 135 ℃ 外形寸法 43mm x 43mm x 27mm 使い方 ArduinoでのDCモータ制御の方法・配線例は下記記事をご参考ください。 ロボステーション https://rb-station.com/article/l298n%e3%83%87%e3%83%a5%e3%82%a2%e3%83%ab%e3%83%a2%e3%83%bc%e3%
各部位の説明
- 駆動電源: 電源部位の左側2つの接続部になります。DCモーターの駆動電圧に合わせた電源を繋ぎます。
- ロジック電源: 電源部位の右側2つの接続部になります。(GNDは共有します。)5Vの電圧ですので、Arduinoのものを使う形で良いでしょう。
- OUT1〜4: DCモーターに繋ぎます。2つのDCモーターまで制御することが可能です。
- IN1〜4: DCモーターを制御する端子で、OUTの番号と紐づいているのでArduinoのGPIOに接続しましょう。
- ENA・ENB: PWMを用いてDCモーターの回転速度を変化させることができるピンです。初期状態はジャンパーピンが挿さっているので、これを抜いて、ArduinoのPWMピンと接続しましょう。
L298Nデュアルモーターコントローラーの接続
このモーターコントローラの場合、1つのモジュールで2つのDCモータを制御することができます。接続の仕方は下記のようになります。
ENAとENBのピンはアナログ入力になりますので、PWM出力可能なピンと接続をしておきましょう。

Arduinoの制御コード
Arduinoでの制御例を記載します。
回転させる場合はどちらか一方のピンをHIGHにし、回転スピードはENA、ENBに接続したピンでanalogWrite(PWM実行)をします。回転スピードは0〜255の値しか設定できないことにご注意ください。
int motors[2][3] = {{4,2,3},{8,7,9}}; void setup() { for(int i = 0; i < 2; i++){ pinMode(motors[i][0], OUTPUT); pinMode(motors[i][1], OUTPUT); pinMode(motors[i][2], OUTPUT); } } void stop() { for (int i = 0; i < 2; i++) { digitalWrite(motors[i][0], LOW); digitalWrite(motors[i][1], LOW); } } // motorNum: 0,1 回転させるモーターの番号 // direction: -1,1 回転させる方向 // power: 0~255 回転スピード void spin(int motorNum, int direction, int power) { if(direction == 1){ digitalWrite(motors[motorNum][0], HIGH); digitalWrite(motors[motorNum][1], LOW); } if(direction == -1){ digitalWrite(motors[motorNum][0], LOW); digitalWrite(motors[motorNum][1], HIGH); } analogWrite(motors[motorNum][2], power); } void loop() { spin(0,1,100); delay(1000); spin(1,1,100); delay(1000); spin(0,-1,200); delay(1000); spin(1,-1,200); delay(1000); stop(); }
その他のDCモータコントローラ
その他、使用する電源やモータの強さに応じて最適なモータコントローラを選定しましょう。下記は一例です。
概要 電圧8V〜40V 電流2Aまで対応が可能な小型のDCモータ用のコントローラです。1つのコントローラで2つのモータを動作させることが可能です。 約2cm四方と、非常に小さいモジュールとなっているのでロボットアームの先端など、重量を小さくする必要がある部分に使用するのに最適です。 PWMによる速度調整の端子は無く、2つのアナログ端子で速度と方向を制御します。 仕様 サイズ 23mm x 18.3mm 質量 3.6g 駆動電圧 8~40V 定格電流(電圧24V時、1チャンネルあたり) 2A ロジック電圧 3~5.5V 定格ロジック電流(電圧5V時) 15mA 接続例 モータB IN1 / モータB IN2 に、Ardui
概要 電圧6.5V〜27V 電流7Aまで対応が可能なDCモータ用のコントローラです。1つのコントローラで2つのモータを動作させることが可能です。 仕様 サイズ 55mm x 55mm(接続端子含まず) 質量 28g 駆動電圧 6.5~27V 定格電流(電圧24V時、1チャンネルあたり) 7A ロジック電圧 3~5.5V 定格ロジック電流(電圧5V時) 15mA 接続例 駆動電圧の+/-に12Vの電源をつなぎます。(2つずつ接続端子があるのでどちらかに接続) Arduinoとの接続端子は上から5V/PWMピン/デジタルピン1/デジタルピン2/GNDとなっています。 Arduinoのコード例 void setup() { pin
概要 電圧6.5V〜28V 電流12Aまで対応が可能なDCモータ用のコントローラです。1つのコントローラで2つのモータを動作させることが可能です。 5cm四方と小型なサイズにかかわらず、1つのモータあたり最大300Wまで対応が可能となっており、ロボット台車の駆動部分として使うのに最適です。 モータの回転方向を表示するLEDがついており、現在どちらの方向に回転しているのかがわかりやすくなっています。 仕様 サイズ 50mm x 50mm x 12.5mm 質量 26g 駆動電圧 6.5~28V 定格電流(電圧24V時、1チャンネルあたり) 12A ロジック電圧 3~5.5V 定格ロジック電流(電圧5V時) 15mA 接続例