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 です。