「Arduinoの基礎 - DCモータ」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(文字列「<source lang」を「<syntaxhighlight lang」に置換)
47行目: 47行目:
<br>
<br>
Arduinoのサンプルコードは、以下の通りである。<br>
Arduinoのサンプルコードは、以下の通りである。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  const int PIN_1A = 5;
  const int PIN_1A = 5;
  const int PIN_2A = 6;
  const int PIN_2A = 6;

2021年11月18日 (木) 10:21時点における版

概要

ここでは、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のサンプルコードは、以下の通りである。

<syntaxhighlight lang="c++">
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);
}
</source>