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%

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

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

概要 電圧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   接続例
モータコントロール

Related Posts

サーボモータがプルプル振動したり動かなくなったりした場合のチェックリスト
サーボモータがプルプル振動したり動かなくなったりした場合のチェックリスト
サーボモータを動かそうとした時にプルプルと振動したり動かなくなってしまった場合にチェックすべき項目を書き出しました。 回路の状態を検証するためにテスターは不可欠ですので、無い人は買っておきましょう。 線が切れ...
Read More
ROSで使われる単位について
ROSで使われる単位について
ROS(Robot Operation System)はオープンソースのロボット開発プラットフォームで、様々な技術要素をライブラリとして使えるため、非常に簡単にロボットシステムを構築することができます。 ROSで使われる距離・重...
Read More
[ROS melodic] Intel RealSense D435iで/scanと/imuのトピックを発行する
[ROS melodic] Intel RealSense D435iで/scanと/imuのトピックを発行する
ROS melodicにおいて、小型の深度センサーである、Intel RealSense D435iを用いて、マップ生成や自己位置推定などに必要な/scanと/imuのトピックを発行したいと思います。RealSenseにはD435とD...
Read More

サイトについて

RoboStationは誰でも手軽にロボットを製作できるようにすることを目的としたEC・ハウツーサイトです。