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モータードライブコントローラを次に示します。
Pro Microとフルブリッジドライバ「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モータードライブコントローラ |
---|---|
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」のスケッチを実行する実行環境を次に示します。
フルブリッジドライバ「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