【完全解説!】L298Nモータードライバモジュールの使い方

モジュール紹介

この記事はL298Nモータードライバモジュールの使い方について解説した記事です。

どうも初めまして。アイスメガネと申します。

皆さんは電子工作でモーターを動かすときどうしているでしょうか?

今回は比較的大きい電流が必要なモータでも、簡単に動作させることができる

「L298Nモータードライバモジュール」について紹介していきます。

使い方だけ知りたい人は目次から参照してください。

今回のモジュールの説明

今回解説するモジュールはこちらのモジュール。

Hブリッジという回路を使用した「L298Nモータードライバモジュール」です。

このモジュールはマイコンボードArduinoと接続することでモータを簡単に制御できるモジュールです。

制御可能なモータはDCモータならば2つ、PWM制御を行うことも可能です。

モーターに流せる電流は商品説明によれば2Aと、比較的大きいのが特徴です。

Arduinoにはモータードライバシールドという、Arduinoの上に差すだけで使えるモジュールもありますが、こちらは○○Aまでしか流せないので、FA-130以上のモーターを高負荷で使いたいときなどは、L298Nモジュールを使った方が安全といえるでしょう。

ちなみにモータードライバシールドは以下のような商品です。
(小型モーターの制御ならこれで十分です。)

外観など

こういったモジュールは意外にサイズ感が分からなかったりするので何枚か画像を張っておきます。

サイズはミンティアと比較すると3分の2くらいの大きさですね。
裏面とランドが異なるので両面基盤です。使う際は裏面の絶縁をお勧めします。

小型、とは言えないかもしれませんが、性能的には十分小さく収まっている方だと思います。

定格について

各社の製品では多少ばらつきがあるのでものにもよりますが、おおよそ定格は以下のようになっています。

  • チップ:L298N
  • 論理電圧(制御用のICの電圧です):5V
  • 駆動電圧(モータに印可する電圧):5V~35V (商品によって多少ばらつきがあるようです。)
  • 論理電流(制御ICの消費電流と思われます):0~36mA
  • 駆動電流(モータに流せる電流):2A
  • 最大出力電力:25W(ほんとかよ)
  • 内部回路:Hブリッジドライバ(デュアルHブリッジ)
  • 保存温度(正常に動作する温度だと思われます):(-20℃~135℃)
  • サイズ:約43mm * 43mm * 27mm

以上のような感じです。模型工作等に使用するならまず十分な性能です。

各ピンの説明

各ピンの説明を簡単にしたいと思います。
Amazonさんからお借りした画像を以下に添付します。


各ピンの内容は以下のようになっています。

出力ピン意味
outputA上記画像では“A”としてひとくくりにされていますが、実際にはOUT1とOUT2端子があります。
これはモータの両端につなぐ線で、どちらかがマイナス、どちらかがプラスになります。
outputB上記画像では“B”としてひとくくりにされていますが、実際にはOUT3とOUT4端子があります。
これはモータの両端につなぐ線で、どちらかがマイナス、どちらかがプラスになります。
このモジュールではDCモータを二つ制御できるので、その二つ目用出力端子です。
12V powerモータへの入力電圧を決める(最大値)電圧になります。
デジタル制御ではこの電圧が出力されます。
このモジュールではPWM制御も行えるので、出力を最大値の255にしたときは
この電圧が出力されることになります。
power GNDGNDの端子になります。ArduinoのGND端子と共通にして使用してください。
+5V power“5V enable”のジャンパがつながっていれば、この端子から5Vが出力されます。
このモジュールをつないでPC等から切り離して使う際などにArduinoに5Vを供給するのにつか
ったりします。※Arduinoの5V出力端子をつなぐわけではないので注意してください。)
5V enable上記で説明した5V出力を使う際に接続するジャンパです。
※(モータへの供給電圧(12V powerピン)を12V以上で使用する場合は外してください。
A enable(ENA)outputA側につなぐモータへの出力を決めるピンです。
デジタルで制御する際はジャンパはつないだままで大丈夫です。
PWM制御を使用する場合はこのジャンパを外して使用します。(後で説明します)
B enable(ENA)outputB側につなぐモータへの出力を決めるピンです。
デジタルで制御する際はジャンパはつないだままで大丈夫です。
PWM制御を使用する場合はこのジャンパを外して使用します。(後で説明します)
Input(全部で4つ)4つあるので以下で説明します。
IN1outputA側につなぐモータへの出力を決めるためのピンです。
IN2outputA側につなぐモータへの出力を決めるためのピンです。
IN3outputB側につなぐモータへの出力を決めるためのピンです。
IN3outputB側につなぐモータへの出力を決めるためのピンです。

長々と説明しましたが、実際に配線すればとても簡単なので早速やってみます。

使い方① – デジタル制御

それでは使い方の解説に入っていきたいと思います。

またデジタル(ONかOFFのみ)で制御する方法と、PWM制御する方法の二つがあるので、
まずはデジタル制御の場合からです。

このモジュールはArduinoで制御するモジュールなので、配線とプログラムの二つに分けて解説したいと思います。

配線

デジタルで制御を行う場合は以下のように配線します。

全体図は上記画像のような感じです。
ブレッドボードはモータへの入力電圧のGNDとArduinoのGNDを共通にするために使っているだけでになります。

詳細が分かりにくいので拡大します。

上記画像のように配線してください。(※上記画像の黄緑色の線は”ー”です。)

緑の線と青の線はArduinoにつながっています。
今回は8番ピンと9番ピンを用いて制御します。

これでデジタル制御を行うための配線が終わりました。次はプログラムです。

注意!!

モーターを回転させる場合はArduinoだけでは電流が足らないので外部電源が必要になります。
Arduinoの5V出力から12Vピンに入力しないようにしましょう。

プログラム

今回は分かりやすいように、output A側のモータのみ制御することにします。

コードは以下の通りです。

#define IN1 9     //9番ピンを出力ピンIN1と定義してます。
#define IN2 8     //8番ピンを出力ピンIN1と定義してます。
void setup() {
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
}

void digital(){
  digitalWrite(IN1,HIGH);     //どちらかがHIGHでモータが周ります。
  digitalWrite(IN2,LOW);      //正転
  delay(2000);                //delayは適当に入れてください。

  digitalWrite(IN1,HIGH);     //両方ともHIGHにするとブレーキ
  digitalWrite(IN2,HIGH);     //停止(ブレーキ)
  delay(2000);

  digitalWrite(IN1,LOW);      //上記のものと逆回転になります。
  digitalWrite(IN2,HIGH);     //逆転
  delay(2000);

  digitalWrite(IN1,LOW);      //停止(惰性回転)
  digitalWrite(IN2,LOW);
  delay(2000);
}

void loop() {
  digital();
}

プログラムの説明は注釈として上記中に入れています。

プログラムの内容は、

「正転→停止(ブレーキ)→逆転→停止」とを繰り返すプログラムです。

入力ピンさえ合っていれば基本コピー&ペーストで動作すると思います。
(全角スペースと日本語は削除してください。)

出力を変更すればいろいろな動きをさせることができますのでいろいろやってみてください。

使い方② – PWM制御

さて、デジタル制御については上の章で説明しました。

ですがこれだとモータをON/OFFのどちらかでしか制御できないのであまり実用的とは言えません。

ですが大丈夫です。最初に説明した通りこのモジュールにはPWM制御機能が付いています

PWM制御の仕組みについてはネット上にたくさん解説記事があるので気になる人は調べてみてください。

配線

配線から解説していきます。

配線は次の画像の通りです。

変わったのは信号線(赤色の長い線)が一本増えたことと、ジャンパが外されたことだけです。

拡大図を以下に示します。

ジャンパは上下につながっているので、
ジャンパを外したら下側のピンに信号線(赤色)をつないでください。
(下側です。)

今回は先ほどでは使用していなかった「ENA」を使用し、PWM制御を行います。

またArduinoのピンは基本的に好きなものを使用できますが、

PWM制御を行えるピンは限られていますので注意してください。
(UNOは7~13のようです。今回は10番ピンを使用しました。)

案外ここを見落として動かない、なんてことが以外にあります。

ボードにより数が限られるので、たくさんモータを制御したい場合にはMEGAボードを使用することをお勧めします。

プログラム

次にPWM制御を行うプログラムを解説していきます。

コードは以下の通りです。

#define IN1 9
#define IN2 8
#define ENA 10

void setup() {
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(ENA,OUTPUT);
}

void analog1(){
  int i;
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  for(i=0;i<256;i++){
    analogWrite(ENA,i);
    delay(20);
  }

  for(i=255;i>=0;i--){
    analogWrite(ENA,i);
    delay(20);
  }

  digitalWrite(IN1,LOW);  //無くても動くが、
  digitalWrite(IN2,LOW);  //リフレッシュの意味で
}                         //あった方がいいみたい

void loop() {
  analog1();
}

説明は上記コード中に注釈で示しています。

このプログラムは、
「加速(正転方向)→減速(正転方向)」を繰り返すプログラムです。

analog,,, のカッコ内の値を変えることでどれくらいの出力で制御するか決められます。

またこのプログラムでは「正転方向」について、加速と減速を行うプログラムになっています。

逆にしたい場合は上記コード中のの赤字を以下のようにすれば逆回転方向で加速、減速を繰り返すようになります。

digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);

最初に示したコードと異なり、IN1とIN2における「LOW」と「HIGH」が入れ替わっています。

つまり、ここで回転方向を決めている、というわけです。

いろいろ変えて試してみると理解しやすいかと思います。

まとめ

いかがだったでしょうか。

ひとまずL298Nモータードライバモジュールを使用するために必要な情報はすべて記載してみました。

自作もいいですが、大量に作る場合はコスパが段違いにいいのでモジュールを購入することをお勧めします。

以下にAmazonで販売されている L298Nモータードライバモジュールのリンクを掲載しておきます。

基本的にどこのものを買っても変わりませんし、不良品があった場合は返金対応されて終わりです。

なので一番安いものか好みのメーカーで購入するのがいいと思います。

読んでいただきありがとうございました。

タイトルとURLをコピーしました