DCモーターは電圧をかければ回りますが、回転方向を変えたり回転速度を変えたりする場合は駆動電圧を変動させる必要があります。

しかしながら、例えば4輪駆動のラジコンカーを作る場合は4つのDCモーターを制御しなければなりません。1つずつ上記のような回路を組んでいくとやや煩雑になってしまいます。

モーターコントローラを使いましょう

https://rb-station.com/products/dc%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9-l298n

そこで、簡素な接続でDCモーターを制御することができるモジュールである、モーターコントローラを使ってよりシンプルにしましょう。

9VのDCモータを駆動する際にこちらのL298Nデュアルモーターコントローラーをおすすめします。駆動電圧が5V~35Vとかなり幅が広いので、多くのDCモーターに対応することが可能かと思われます。

 


L298Nデュアルモーターコントローラーの外観

各部位の説明各部位の説明

  • 駆動電源: 電源部位の左側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出力可能なピンと接続をしておきましょう。


L298NとArduinoの接続

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モータコントローラ

その他、使用する電源やモータの強さに応じて最適なモータコントローラを選定しましょう。下記は一例です。

https://rb-station.com/products/8v-40v-2a%E5%AF%BE%E5%BF%9C-%E5%B0%8F%E5%9E%8Bdc%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9

https://rb-station.com/products/12-24v-7a-dc%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9

https://rb-station.com/products/12v-24v-12a%E5%AF%BE%E5%BF%9C-%E5%A4%A7%E9%9B%BB%E6%B5%81dc%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9

モータコントロール

Related Posts

Arduinoのコードでキュー(Queue)を使う
Arduinoのコードでキュー(Queue)を使う
概要 Arduinoのコードを書く際に、処理をキューイングして順番に処理をしていきたい時がありました。Arduinoにはarrayはありますが、FIFO(後述)型のキューはデフォルトでは無いため、外部ライブラリをインクルードする必要が...
Read More
2輪駆動 ロボット台車・カーシャーシの組み立て方
2輪駆動 ロボット台車・カーシャーシの組み立て方
RoboStationで販売しているロボット台車・「積載重量4kg/3kg 2輪駆動 ロボット台車・カーシャーシ」の組み立て方について解説をします。   貼り付けられている写真はDCモータ版での組み立てですが、ステッピングモーター版...
Read More
L298PモータシールドとArduinoを使ってシンプルな配線でDCモータを制御しよう
L298PモータシールドとArduinoを使ってシンプルな配線でDCモータを制御しよう
DCモータコントローラについて DCモータを制御したい時に、1から制御回路を作るのは面倒ですので、DCモータコントローラを用いることが多いと思います。しかし、通常のモータコントローラでは、配線数が多くなってしまいがちなので、配線数を減...
Read More