Arduinoの基礎 - DCモータ

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

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

動作試験を行うため、以下の製品を使用している。

  • L293D(TI製)
  • 模型用モータ 2個
  • 抵抗10[kΩ] 2個
  • セラミックコンデンサ 0.1[μF] 1個
  • アルミ電解コンデンサ 1[μF]
  • 9V 電池スナップ
  • 22[AWG] ソリッドコアワイヤ / ジャンパワイヤ


<yjshopping seller_id="robotena">DCギヤボックス+タイヤセット</yjshopping>


L293Dの使用

L293Dのピン配置は、以下の通りである。

Arduino L293D 1.png


TI社のデータシートより、電流は1[A]となっている。
L293Dの電源電圧VCC1(16番ピン)は、Arduinoの5[V]ピンと接続している。
L293DのVCC2(8番ピン)はモータへの電源であるので、9[V]電池と接続する。
また、Arduinoへの電源はVINに接続する。

Arduino L293D 2.png


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

EN 1A 2A 1Y 2Y 回転方向
H H L H L
H L H L H
H L L
STOP
H H H
L
-


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);
 }