Pro Microによりフルブリッジドライバ「L298N」を動作させる

Pro Microを用いてフルブリッジドライバ「L298N」を動作させてみました。

フルブリッジドライバ「L298N」の説明

今回使用したL298Nモータードライブコントローラの仕様を次に示します。

  • チップ:L298N(ST社)
  • 論理電圧:5V
  • 駆動電圧:5V-35V
  • 論理電流:0mA、36mA
  • 駆動電流:2A(MAXシングルブリッジ)
  • 最大消費電力:25W

外部電源の電圧が12V以下の場合のみジャンパ接続する事で給電できます。ENABLE A、ENABLE BはジャンパでLOGIC SUPPLY VOLTAGE VSSと接続されていますが、ステッパーモーターの使用やらDCモーターの速度コントロールを行う場合は、ジャンパを取り外しArduino上のPWM接続可能な信号PIN(Pro Microだと3、5、6、9、10のいずれか)と接続します。今回使用したL298Nモータードライブコントローラを次に示します。

フルブリッジドライバ「L298N」

Pro Microとフルブリッジドライバ「L298N」の接続

今回使用したL298Nモータードライブコントローラの信号の説明を次に示します。

L298Nの信号説明
信号 名説明
OUT1 DCモータ1"+"あるいはステッパーモーターA+の出力
OUT2 DCモータ1"-"あるいはステッパーモーターA-の出力
CON5 12Vジャンパ。オンボード上の5Vレギュレータを動作させる。 DC12V以上電圧を供給するならば、このジャンパを削除する。
+12V モーターに供給する電圧を接続する。最大DC35V で DC12V以上の場合、12Vジャンパを削除する。
GND GND
+5V output if 12Vジャンパが設定されていれば5Vは出力され、Arduinoなどの電源に適している。
ENA DCモーター1可能ジャンパ。 ステッパーモーターを使用するときはこのまま設定しておき、DCモーター速度を制御するには、PWM出力に接続する。
IN1 DCモータ1"+"あるいはステッパーモーターA+の入力
IN2 DCモータ1"-"あるいはステッパーモーターA-の入力
IN3 DCモータ2"+"あるいはステッパーモーターB+の入力
IN4 DCモータ2"-"あるいはステッパーモーターB-の入力
ENB DCモーター2可能ジャンパ。 ステッパーモーターを使用するときはこのまま設定しておき、DCモーター速度を制御するには、PWM出力に接続する。
OUT3 DCモータ2"+"あるいはステッパーモーターB+の出力
OUT4 DCモータ2"-"あるいはステッパーモーターB-の出力

Pro MicroとL298Nモータードライブコントローラを次のように接続します。

Pro MicroとL298Nモータードライブコントローラの接続する信号PIN
Pro Micro L298Nモータードライブコントローラ
5 ENB
6 IN4
7 IN3
GND GND

5Vの電源をMT3608/2A Step Up Power Apply Booster Plate Module DC-DC 2V-24V を用いて6Vに昇圧して、L298Nモータードライブコントローラのモーターに供給する電圧「+12V」とGNDに接続します。また、L298NモータードライブコントローラのOUT3とOUT4にはテスターを接続して、出力した電圧を測定します。

全てを接続してフルブリッジドライバ「L298N」のスケッチを実行する実行環境を次に示します。

Pro Microとフルブリッジドライバ「L298N」の接続

フルブリッジドライバ「L298N」のスケッチの作成

スケッチは「L298N Dual H-Bridge Motor Controller moduleを使ってみた」をそのまま使わせていただきました。実行させると、正回転、逆回転、加速、減速を繰り返します。

int enA = 10;
int in1 = 9;
int in2 = 8;
int enB = 5;
int in3 = 7;
int in4 = 6;

void setup() {
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  Serial.begin(9600);
}

void demoOne() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(enA, 200);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enB, 200);
  delay(2000);

  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(2000);
  
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void demoTwo() {
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);

  Serial.println("analogWrite 0->256");
  for (int i = 0; i < 256; i++) {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }

  Serial.println("analogWrite 256->0");
  for (int i = 255; i >= 0; --i) {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  } 

  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void loop() {
  Serial.println("demo 1");
  demoOne();
  delay(1000);
  Serial.println("demo 2");
  demoTwo();
  delay(1000);
}

フルブリッジドライバ「L298N」のスケッチの実行

フルブリッジドライバ「L298N」のスケッチを実行すると、シリアルモニタに次のメッセージが表示され、テスターで電圧を計測すると、6V-0Vを段階的に増減していることが確認できました。

demo 1
demo 2
analogWrite 0->256
analogWrite 256->0
demo 1
demo 2
analogWrite 0->256
analogWrite 256->0
demo 1
demo 2
analogWrite 0->256
analogWrite 256->0
demo 1
demo 2
analogWrite 0->256
analogWrite 256->0