L298NデュアルモーターコントローラーモジュールとArduinoを使用したDCおよびステッピングモーターの制御

Arduinoまたは互換性のあるボードでモーターを制御するために多くのお金を費やす必要はありません。 いくつかの探索の後、2つのDCモーターの速度と方向を制御したり、1つのバイポーラステッピングモーターを簡単に制御したりできる、L298N HブリッジICに基づくきちんとしたモーター制御モジュールを見つけました。

L298N Hブリッジモジュールは、5〜35V DCの電圧を持つモーターで使用できます。 このチュートリアルで使用するモジュールには、オンボード5Vレギュレーターもあります。そのため、供給電圧が最大12Vの場合、ボードから5Vを供給することもできます。

それでは始めましょう!

ステップ1:L298モジュールの接続を理解する

最初に接続を実行し、次にDCモーター、次にステッピングモーターを制御する方法を説明します。 この時点で、L298N Hブリッジモジュールの接続を確認します。

画像を考慮してください–画像の下のリストと番号を一致させてください:

  1. DCモーター1“ +”またはステッピングモーターA +
  2. DCモーター1“-”またはステッピングモーターA-
  3. 12Vジャンパー– 12V DCを超える供給電圧を使用している場合、これを取り外します。 これにより、オンボード5Vレギュレーターへの電力供給が可能になります

  4. 最大35V DCのモーター供給電圧をここに接続します。 > 12V DCの場合、12Vジャンパーを取り外します

  5. GND

  6. 12Vジャンパーが所定の位置にある場合は5V出力で、Arduino(など)の電源供給に最適

  7. DCモーター1はジャンパーを有効にします。 ステッピングモーターを使用する場合は、これをそのままにしておきます。 DCモーターの速度制御のためにPWM出力に接続します。

  8. 1で

  9. IN2

  10. IN3

  11. IN4

  12. DCモーター2はジャンパーを有効にします。 ステッピングモーターを使用する場合は、これをそのままにしておきます。 DCモーター速度制御用のPWM出力に接続

  13. DCモーター2“ +”またはステッピングモーターB +

  14. DCモーター2“-”またはステッピングモーターB-

ステップ2:DCモーターの制御

L298N Hブリッジモジュールを使用すると、1つまたは2つのDCモーターを簡単に制御できます。 まず、各モーターをL298NモジュールのAおよびB接続に接続します。

ロボットなどに2つのモーターを使用している場合、モーターの極性が両方の入力で同じであることを確認してください。 そうしないと、両方のモーターを前方に設定し、一方を後方に設定したときに、それらを交換する必要があるかもしれません!

次に、電源を接続します。プラスをモジュールのピン4に、マイナス/ GNDをピン5に接続します。電源が最大12Vの場合、12Vジャンパーのままにしておくことができます(上の画像のポイント3)。モジュールのピン6から。

これをArduinoの5Vピンに供給して、モーターの電源から電力を供給することができます。 回路を完成させるために、モジュールのピン5にもArduino GNDを接続することを忘れないでください。 これで、Arduinoに6つのデジタル出力ピンが必要になります。そのうちの2つはPWM(パルス幅変調)ピンである必要があります。

PWMピンは、たとえばArduino Unoのデジタルピンの画像では、ピン番号の横にチルダ(「〜」)で示されています。

最後に、Arduinoデジタル出力ピンをドライバーモジュールに接続します。 この例では、2つのDCモーターがあるため、デジタルピンD9、D8、D7、およびD6はそれぞれピンIN1、IN2、IN3、およびIN4に接続されます。 次に、D10をモジュールピン7に接続し(最初にジャンパーを取り外します)、D5をモジュールピン12に接続します(再度、ジャンパーを取り外します)。

モーターの方向は、各モーター(またはチャネル)のドライブにHIGHまたはLOW信号を送信することにより制御されます。 たとえば、モーター1の場合、IN1をHIGHに、IN2をLOWにすると、1つの方向に回転し、LOWおよびHIGHにすると、他の方向に回転します。

ただし、イネーブルピンにHIGHが設定されるまでモーターは回転しません(モーター1の場合は7、モーター2の場合は12)。 また、同じピンをLOWでオフにすることができます。 ただし、モーターの速度を制御する必要がある場合は、イネーブルピンに接続されたデジタルピンからのPWM信号で処理できます。

これは、DCモーターのデモスケッチで行ったことです。 2つのDCモーターとArduino Unoは、上記のように、外部電源とともに接続されます。 次に、次のスケッチを入力してアップロードします。

 //モーターコントローラーのピンをArduinoデジタルピンに接続します//モーター1 int enA = 10; int in1 = 9; int in2 = 8; //モーター2 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); } void demoOne(){//この関数は、モーターを両方向に固定速度で実行します//モーターAをオンにしますdigitalWrite(in1、HIGH); digitalWrite(in2、LOW); //速度を可能な範囲0から255のうち200に設定analogWrite(enA、200); //モーターBをオンにしますdigitalWrite(in3、HIGH); digitalWrite(in4、LOW); //速度を0〜255の範囲内で200に設定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(){//この関数は、可能な速度の範囲にわたってモーターを実行します//最大速度はモーター自体と動作電圧によって決定されることに注意してください// analogWrite()によって送信されるPWM値は、可能な最大速度//ハードウェアによって//モーターをオンにするdigitalWrite(in1、LOW); digitalWrite(in2、HIGH); digitalWrite(in3、LOW); digitalWrite(in4、HIGH); //ゼロから最大速度まで加速します(int i = 0; i <256; i ++){analogWrite(enA、i); analogWrite(enB、i); delay(20); } //最大速度からゼロまで減速する(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(){demoOne(); delay(1000); demoTwo(); delay(1000); } 

それでは、そのスケッチで何が起こっているのでしょうか? 関数demoOne()では、モーターをオンにして200のPWM値で実行します。これは速度値ではなく、200/255の時間で一度に電力が適用されます。


しばらくすると、モーターが逆方向に動作します(digitalWrite()関数でHIGHとLOWを変更した方法を参照してください)。 ハードウェアで可能な速度の範囲を把握するために、関数demoTwo()でPWM範囲全体を実行します。この関数はモーターをオンにし、2つのforループでPWM値0〜255を返します。 。

最後に、このページのビデオで、2つのDCモーターを備えた使い古したタンクシャーシを使用してこれを説明します。

手順3:ArduinoとL298Nを使用してステッピングモーターを制御する

ステッピングモーターは複雑に見えるかもしれませんが、真実に勝るものはありません。 この例では、このステップの画像に示すように、4本のワイヤを持つ典型的なNEMA-17ステッピングモーターを制御します。

1回転あたり200ステップあり、60 RPMで動作できます。 モーターのステップと速度の値がまだない場合は、今すぐ調べてスケッチに必要になります。

ステッピングモーター制御を成功させるための鍵は、ワイヤを識別することです。 A +、A-、B +、およびB-ワイヤを決定する必要があります。 この例のモーターでは、これらは赤、緑、黄、青です。 次に、配線を完了します。

A +、A-、B +、B-ワイヤをステッピングモーターからモジュール接続1、2、13、14にそれぞれ接続します。 L298Nモジュールに含まれているジャンパーをモジュールポイント7および12のペアに配置します。次に、必要に応じて電源をポイント4(正)および5(負/ GND)に接続します。

ステッピングモーターの電源が12V未満の場合も、ジャンパーをポイント3でモジュールに取り付けると、Arduinoにきちんとした5V電源が供給されます。 次に、L298NモジュールのピンIN1、IN2、IN3、IN4をそれぞれArduinoデジタルピンD8、D9、D10、D11に接続します。

最後に、モジュールの5Vを供給する場合、Arduino GNDをモジュールのポイント5に、Arduino 5Vをポイント6に接続します。 Arduino IDEに標準で含まれているステッパーArduinoライブラリのおかげで、スケッチからステッピングモーターを制御するのは非常に簡単です。

モーターのデモを行うには、Stepperライブラリに含まれているstepper_oneRevolutionスケッチをロードするだけです。 これを見つけるには、Arduino IDEの[ファイル]> [例]> [ステッパー]メニューをクリックします。

最後に、次の値を確認します

 const int stepsPerRevolution = 200; 
スケッチで200をステッピングモーターの1回転あたりのステップ数に変更し、速度を次の行で60 RPMにプリセットします。
 myStepper.setSpeed(60); 

これで、スケッチを保存してアップロードすることができます。これにより、ステッピングモーターが1回転し、再び戻ります。 これは次の機能により実現されます

myStepper.step(stepsPerRevolution); //時計回り

myStepper.step(-stepsPerRevolution); //反時計回り

最後に、このステップのビデオにテストハードウェアの簡単なデモを示します。

Arduinoまたは互換性のあるボードでモーターを制御する簡単で安価な方法があります。 また、この記事を楽しんだり、Arduinoの興味深い世界を他の人に紹介したい場合は、私の本(現在4回目の印刷です!)の「Arduino Workshop」をご覧ください。

関連記事