IoT のための電子工作入門

ホーム > ArduinoArduino 入門 > Arduino と L293D で DC モーターを制御する方法

Arduino と L293D で DC モーターを制御する方法

ここでは L293D モータードライバー IC を使って、Arduino から DC モーターを制御する方法を説明します。

デモビデオはこちらです。 Arduino UNO と L293D で模型用の小さなモーターを二つ動かしています。

ビデオで使っているのは次の通りです。

  • Arduino UNO V3 クローンボード (1個300円位でした)
  • L293D (TI)
  • 模型用モーター 2個

    たぶんこれ↓と同じだと思いますが、違ったらごめんなさい。

  • ブレッドボード
  • 10kΩ 抵抗 2個
  • 0.1μF セラミックコンデンサ 1個
  • 1 μF アルミ電解コンデンサ
  • 9V 電池スナップ
  • 22AWG ソリッドコアワイヤ/ジャンパワイヤ
  • ハンダごて等

このビデオ内で使用している Arduino プログラムは次の通りです。

const int PIN_1A = 5;
const int PIN_2A = 6;
const int PIN_3A = 7;
const int PIN_4A = 8;

void setup() {
  pinMode(PIN_1A, OUTPUT);
  pinMode(PIN_2A, OUTPUT);
  pinMode(PIN_3A, OUTPUT);
  pinMode(PIN_4A, OUTPUT);
}

void loop() {
  motor1( HIGH,  LOW, 3000);
  motor1(  LOW,  LOW,  100);
  motor1(  LOW, HIGH, 3000);
  motor1(  LOW,  LOW, 0);

  motor2( HIGH,  LOW, 3000);
  motor2(  LOW,  LOW,  100);
  motor2(  LOW, HIGH, 3000);
  motor2(  LOW,  LOW, 0);
}

void motor1(int a1, int a2, int d){
  digitalWrite(PIN_1A, a1);
  digitalWrite(PIN_2A, a2);
  delay(d);
}

void motor2(int a3, int a4, int d){
  digitalWrite(PIN_3A, a3);
  digitalWrite(PIN_4A, a4);
  delay(d);
}

L293D のピン配置は次のようになっています。


テキサスインスツルメント社のデータシートから。これは L293 なので 1A となっています。

ビデオ内で説明しているように、Vcc1 (16番ピン) に L239D の電源として 5V を Arduino の 5V ピンからつないでいます。

Vcc2 (8番ピン) はモーターへの電源になるので、こちらは 9V の電池から直接つなぎます。また、Arduino への電源は VIN に接続します。

モーター1は 1Y と 2Y、モーター 2 は 3Y と 4Y に接続しています。

双方向の回転 (回転方向を変える) を実現するために 1Y/2Y とか 3Y/4Y とペアにしてモーターに接続していますが、 1 方向だけなら 1Y/GND、2Y/GND のようにしても OK です。

ホーム > ArduinoArduino 入門 > Arduino と L293D で DC モーターを制御する方法