製品の概要
DCモータを簡単に駆動出来るボード”L298N DCモータコントロールボードの説明です。
ボードの説明
このボードで2個のDCモータを駆動出来ます。ボードの詳細は以下の通り。
ボードの使用例
ENA,ENBジャンパーをつないでIN1,2,3,4をコントロールすれば入力電圧(12V)でモータが回ります。ここで注意点は
- MAXスピードで回転(ハード)
- モータにかかる電圧は回路ドロップの為、入力電圧より約2V低い
- ボード内のロジックは5V仕様。(回転方向管理端子IN1,2,3,4は 3.3Vで管理出来る。)
- ESP32を使った配線例。
- MAXスピードで回転(ソフト)
- コントロール端子を初期化した後、正転、反転、停止 を繰り返す。
wheel00.ino arduino
#include "Arduino.h" // wheel parameter #define wheel_N1 26 #define wheel_N2 27 #define wheel_N3 14 #define wheel_N4 12 void setup() { Serial.begin(115200); // init wheel pinMode(wheel_N1, OUTPUT); pinMode(wheel_N2, OUTPUT); pinMode(wheel_N3, OUTPUT); pinMode(wheel_N4, OUTPUT); digitalWrite(wheel_N1, LOW); digitalWrite(wheel_N2, LOW); digitalWrite(wheel_N3, LOW); digitalWrite(wheel_N4, LOW); } void loop() { Serial.println("Turn Right A"); digitalWrite(wheel_N1, HIGH); digitalWrite(wheel_N2, LOW); delay(3000); Serial.println("Turn Left A"); digitalWrite(wheel_N1, LOW); digitalWrite(wheel_N2, HIGH); delay(3000); Serial.println("Brake A"); digitalWrite(wheel_N1, HIGH); digitalWrite(wheel_N2, HIGH); delay(500); Serial.println("Turn Right B"); digitalWrite(wheel_N3, HIGH); digitalWrite(wheel_N4, LOW); delay(3000); Serial.println("Turn Right B"); digitalWrite(wheel_N3, LOW); digitalWrite(wheel_N4, HIGH); delay(3000); Serial.println("Stop B"); digitalWrite(wheel_N3, LOW); digitalWrite(wheel_N4, LOW); delay(500); }
- コントロール端子を初期化した後、正転、反転、停止 を繰り返す。
- スピードをコントロールして回転(ハード)
- ENA,ENBの電圧に比例してモータに送られる電圧が設定出来ます。
- ENA,ENBの電圧が
- 0V:モータへ0V
- 5V:モータへ入力電圧
- PWMを使ってENA,ENBピンの電圧を設定すればモータ回転速度を管理出来る
- L298NとESP32のロジック電圧が違う点に注意
- L298Nのロジック電圧は5V、ESP32のロジック電圧は3.3V
- ESP32ではMAX電圧をモータに与える事が出来ない
- ESP32で与えられる最大値:最大値 = 入力電圧 X 3.3 / 5 (V)
- スピードをコントロールして回転(ソフト)
- analogWrite()関数を使ってENA,ENB端子の電圧を管理してモータの回転速度を変更
wheel01.ino arduino
#include "Arduino.h" // wheel parameter #define wheel_N1 26 #define wheel_N2 27 #define wheel_N3 14 #define wheel_N4 12 #define wheel_ENA 13 #define wheel_ENB 25 void setup() { Serial.begin(115200); analogWrite(wheel_ENA, 0); analogWrite(wheel_ENB, 0); // init wheel pinMode(wheel_N1, OUTPUT); pinMode(wheel_N2, OUTPUT); pinMode(wheel_N3, OUTPUT); pinMode(wheel_N4, OUTPUT); digitalWrite(wheel_N1, LOW); digitalWrite(wheel_N2, LOW); digitalWrite(wheel_N3, LOW); digitalWrite(wheel_N4, LOW); } void loop() { int a; Serial.println("Turn A"); digitalWrite(wheel_N1, HIGH); digitalWrite(wheel_N2, LOW); for(a = 0; a < 256; a += 50){ Serial.println("vol: " + String(a)); analogWrite(wheel_ENA, a); delay(3000); } Serial.println("Stop A"); analogWrite(wheel_ENA, 0); delay(1000); Serial.println("Turn B"); digitalWrite(wheel_N3, HIGH); digitalWrite(wheel_N4, LOW); for(a = 0; a < 256; a += 50){ Serial.println("vol: " + String(a)); analogWrite(wheel_ENB, a); delay(3000); } Serial.println("Stop B"); analogWrite(wheel_ENB, 0); delay(1000); }
- analogWrite()関数を使ってENA,ENB端子の電圧を管理してモータの回転速度を変更
最後に
容易にスピードコントロールが出来て非常に使い易いボードです。 ホビーでDCモータを使う製品にはうってつけのボードです。
最後に使用上の注意点
- コントロール側(ESP32またはRaspberry PIなど)とこのボードのGNDを共通にする。
- このボードとコントロール側の電源は別電源になると思います。
- その場合、互いのGNDは共通にして下さい。(一緒にしないと誤動作の原因になる)
- 電圧値=回転スピードとはならない (デッドゾーン)
- analogWrite(wheel_ENA, 1); とした場合、MAXスピードの256分の1で回転するとは限らない
- 電圧がモータが回転する必要最低限の値に達しなければモータは唸るだけで回らない。
- モータの回転を管理する時はこの点に気を付けましょう。