検索コード

レッスン95:L293D 4 DCモータシールドの使用 | Arduinoステップバイステップコース

レッスン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_Shield_wiring

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つのモーターを制御するデモンストレーション

画像

L293D-Sheild-1
L293D-Sheild-1
L293D-Sheild-2
L293D-Sheild-2
L293D-Sheild-3
L293D-Sheild-3
L293d_sheild_main
L293d_sheild_main
L293d_Shield_wiring
L293d_Shield_wiring
439-Lesson 95: Using L293D 4 DC Motor Shield | Arduino Step-by-Step Course
言語: C++
/* 
* 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);
}

リソースと参考文献

ファイル📁

ファイルは利用できません。