概要
DCモータをArduinoなどのマイコンで制御する場合、モータドライバやモータコントローラを使用します。
ただし、複数のDCモータを制御しようとすると、モータドライバ、電源、マイコン間の配線が増え、構成が複雑になりがちです。特に4輪駆動のロボットカーやメカナムホイール台車のように、4つのモータを使う場合は、配線の整理も重要になります。
L293Dモータシールドは、Arduinoの上に差し込んで使用できるシールド型のDCモータコントローラです。最大4つのDCモータを1枚の基板で制御できるため、4輪駆動ロボットや小型移動ロボットの試作に適しています。
接続の仕方

基板下部の電源端子には、モータ用の電源を接続します。対応するモータ電源電圧は6V〜15Vです。
基板の左右にあるA/Bそれぞれの接続端子に、DCモータを接続します。このシールドでは、最大4つまでのDCモータを接続して制御できます。

使用する際は、Arduinoの上にL293Dモータシールドを差し込む形で接続します。シールド型のため、ジャンパ線で細かく配線する必要が少なく、Arduinoとモータドライバの接続を簡単に行えます。
モータ用の電源はシールド側の電源端子に接続します。構成によっては、シールド経由でArduino側へ電源供給される場合もありますが、使用するArduinoやジャンパ設定によって異なるため、接続前に仕様を確認してください。

DCモータを4つ接続しても、配線をシールド上にまとめられるため、全体の構成をシンプルにできます。ロボットに搭載する場合や、試作時に配線を整理したい場合に便利です。
制御コード例
制御には、AFMotorライブラリを使用します。
上記URLからライブラリをZIP形式でダウンロードし、Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」から追加してください。
以下は、4つのDCモータを同時に正転・逆転させるサンプルコードです。
#include <AFMotor.h>
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
void setup() {
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
}
void loop() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
delay(2000);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
delay(2000);
}
AF_DCMotor motor1(1); のように記述することで、シールド上の各モータチャンネルを指定できます。1〜4の番号が、それぞれ接続したモータに対応します。
run(FORWARD) で正転、run(BACKWARD) で逆転、run(RELEASE) で停止状態にできます。また、setSpeed() でモータの回転速度を指定します。値は0〜255の範囲で設定できます。
使用時の注意点
接続するDCモータの電圧・電流が、L293Dモータシールドの仕様範囲内であることを確認してください。特に、モータの起動時や負荷がかかった状態では一時的に大きな電流が流れる場合があります。
また、モータを長時間動作させる場合や負荷の大きいモータを使用する場合は、モータドライバICが発熱することがあります。動作確認時は、発熱の状態にも注意してください。
L293Dモータシールドは、Arduinoで複数のDCモータを手軽に制御したい場合に便利なモータコントローラです。4輪駆動ロボットやメカナムホイールロボットなど、4つのモータを使う構成では特に使いやすいシールドです。



