レッスン95:L293D 4 DCモータシールドの使用 | Arduinoステップバイステップコース
このチュートリアルでは、Arduinoを使用してL293Dモーターシールドで4つのDCモーターを制御する方法を探ります。このセットアップは、ロボットカーを作るなど、ロボティクスアプリケーションに特に便利であり、正確なモーター制御が不可欠です。このレッスンの終わりまでには、複数のモーターを同時に動作させることができる動作モデルを持つことができます。

L293Dモーターシールドは配線プロセスを簡素化し、数回の接続だけでモーターを制御できるようにします。このシールドをArduinoに配線し、コードを設定し、モーター制御コマンドを効果的に実行する方法を学びます。より視覚的な説明については、配線やコーディングの詳細に関する特定のタイムスタンプの動画を参照できます(動画内のmm:ss)。
ハードウェアの解説
このプロジェクトの主なコンポーネントはL293Dモーターシールドで、これは4つの半分Hブリッジモータードライバーです。これは、2つのモーターを両方の方向で制御できることを意味し、モーターの回転を完全に制御できます。このシールドはArduinoに直接接続されるため、ケーブルを乱雑にすることなく、電力と制御信号を簡単に管理できます。
各L293Dチップは、チャンネルごとに最大600 mAの電流を処理でき、4.5Vから36Vの電圧で動作します。この範囲は、さまざまなDCモーターに適しています。さらに、このシールドには、モーターとArduinoの両方に単一の外部電源から電力を供給できるジャンパーが搭載されています。
データシートの詳細
| メーカー | テキサス・インスツルメンツ |
|---|---|
| 部品番号 | L293D |
| 論理/ I/O 電圧 | 5 V |
| 供給電圧 | 4.5 - 36 V |
| 出力電流(チャネルごと) | 600 mA |
| ピーク電流(チャネルごと) | 1.2 A |
| PWM周波数ガイダンス | 1 kHz - 20 kHz |
| 入力ロジックの閾値 | 2 V 最小 (高), 0.8 V 最大 (低) |
| 電圧降下 / RDS(on)/ サチュレーション | 1.5 V 最大 |
| 熱的限界 | 150 °C |
| パッケージ | 16-DIP |
| ノート / バリアント | デュアルHブリッジ構成 |
- モーターが損傷を防ぐために600 mAを超えないようにしてください。
- 高電流アプリケーションには適切なヒートシンクを使用してください。
- Arduinoに電源を入れる前に、外部電源を接続してください。
- シールドとArduinoに電源を供給するためのジャンパーの配置を確認してください。
- 必要に応じて接続を入れ替えて、モーターの方向をテストしてください。
配線指示

L293DモーターシールドをArduino UnoまたはMegaに接続することから始めます。シールドのピンをArduinoのヘッダーに合わせ、しっかりと押し下げます。次に、DCモーターを端子に接続します。M1,M2,M3, とM4シールド上に。それぞれのモーターには2つの端子が必要なので、正しい回転方向のために適切に接続されていることを確認してください。
電源として、外部バッテリーまたは電源をシールドの電源入力端子に接続し、電圧が4.5Vから36Vの範囲内であることを確認してください。電力がArduinoに流れるように、シールドのジャンパーを接続するのを忘れないでください。最後に、電源のグラウンドをArduinoのグラウンドピンに接続して回路を完成させます。
必要なライブラリをインストールしてください
ライブラリアイコンをクリックして検索してください:Adafruit Motor Sheild Libraryインストールをクリックして、それをインストールします。
コードの例とウォークスルー
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);コードでは、4つのモーターオブジェクトを初期化します:motor1,motor2,motor3, とmotor4各モーターには、モーターシールドの端子接続に対応するチャンネル番号が割り当てられています。これにより、各モーターを個別に制御することができます。
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Robojax L293D Example");
}そのsetup()関数はシリアル通信を初期化し、Arduino IDEからメッセージを送受信できるようにします。これはモーター制御プロセスのデバッグと監視に役立ちます。
motor1.setSpeed(speed(50)); //set speed for motor 1 at 50%
motor1.run(FORWARD); //send motor 1 to Forward rotationモーターを制御するために、速度を設定します。setSpeed()メソッドは、0から255の間の値を取ります。run()指定された方向でモーターを起動します。FORWARDまたはBACKWARD必要に応じて速度を動的に調整できます。
デモンストレーション / 期待すること
すべてが配線され、コードがアップロードされると、モーターはコードのコマンドに従って回転するはずです。最初に1つのモーターがオンになり、その後他のモーターが順番に回転し、それぞれが設定された時間だけ動作します。モーターが期待通りに動作しない場合は、配線を確認し、ジャンパーが接続されていることを確認し、電源が十分であることを確認してください(動画のmm:ssで)。
動画のタイムスタンプ
- 00:00 イントロダクション
- 03:00 L293Dのデータシート
- 03:56 配線の説明
- 07:21 コードとライブラリ
- 13:51 4つのモーターを制御するデモンストレーション
/*
* Lesson 95: Control 4 DC Motors for a Smart Car using a Motor Shield
* This code works with Arduino UNO and Arduino Mega.
* Wiring diagram and how to wire and connect the power supply is shown in the video.
Watch full video instruction: https://youtu.be/0XihwdulmDQ
* Download this code from: http://robojax.com
*
* Written by Ahmad Shamshiri for Robojax.com on Jan 09, 2022
* in Ajax, Ontario, Canada
This video is part of an Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
If you found this tutorial helpful, please support me so I can continue creating content like this
and make a donation using PayPal http://robojax.com/L/?id=64
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
* Library location: https://github.com/adafruit/Adafruit-Motor-Shield-library
Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!
*/
#include <AFMotor.h>
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Robojax L293D Example");
}
void loop() {
motor1.setSpeed( speed(50) ); //set speed for motor 1 at 50%
motor1.run(FORWARD);//send motor 1 to Foarward rotation
delay(2000);//wait for 2 seconds
motor2.setSpeed( speed(100) );//set speed for motor 2 at 100%
motor2.run(BACKWARD);//send motor 2 to Foarward rotation
delay(2000);
motor3.setSpeed( speed(70) );
motor3.run(FORWARD);
delay(2000);
motor4.setSpeed( speed(90) );
motor4.run(FORWARD);
delay(2000);
motor1.run(BRAKE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(2000);
motor1.setSpeed(speed(100));
motor1.run(BACKWARD);
delay(2000);
motor1.run(RELEASE);
delay(1000);
}
/*
* speed percent to speed converter
* receives value between 0 to 100 and converts it to value between
* 0 to 255 which are 8 bits Arduino PWM value
* www.Robojax.com
Watch full video instruction: https://youtu.be/0XihwdulmDQ
*/
int speed(int percent)
{
return map(percent, 0, 100, 0, 255);
}
必要かもしれないもの
-
アマゾンAmazonからL293Dモーターシールドを購入してください。amzn.to
-
アマゾンカナダのアマゾンでL293Dモーターシールドを購入するamzn.to
-
イーベイeBayでL293Dモーターシールドを購入してください。ebay.us
-
アリエクスプレスAliExpressからL293Dモーターシールドを購入するs.click.aliexpress.com
リソースと参考文献
-
外部L293Dモータードライバーデータシート(PDF)ti.com
ファイル📁
ファイルは利用できません。