L293D モータードライバーシールド を使ってみる(Arduino)

宝箱?の押入を整理していたら、
L293Dモータードライバーシールドが出てきました。
少し古いものですが、このシールド1枚で、
DCモーター、ステッピングモーター、サーボモーター
の制御が可能です。
今では、国内での販売は少ないようですが、
大陸ではまだまだ多く販売されています。

L293Dモータードライバーシールド
L293Dモータードライバーシールド
Arduinoと接続した L293Dモータードライバーシールド
Arduinoと接続した L293Dモータードライバーシールド

 ・arduino motor shield V1.x
  国内:¥1,000-前後
  大陸:¥200-前後

現在ではこの製品の新しい(後継)製品が販売されています。
"モータードライバーシールド V2.x"
というものです。 

 ・Arduino用モーター・シールドキット V2.3
  秋月電子通商
   https://akizukidenshi.com/catalog/g/gK-07748/
   ¥2,370-
 ・Iic I2C TB6612 mosfetステッピングモータPCA9685 pwmサーボドライバシールドV2
  AliExpress
   https://ja.aliexpress.com/
   ¥840-(お店により価格。送料は違います)

この製品、"L293Dモータードライバーシールド V1.x" は、
 ・DCモーター (4個)

DCモーターの接続
DCモーターの接続

 ・ステッピングモーター (2個)

ステッピングモーターの接続
ステッピングモーターの接続

 ・サーボモーター (2個)

サーボモーターの接続
サーボモーターの接続

が制御できます。
※DCモーター2個か、ステッピングモーター1個か
  のどちらか選択になります。

シールドに接続したDC,ステッピング,サーボモーター
シールドに接続したDC,ステッピング,サーボモーター

今回使用する各モーターの参考:
 Ali Express
  https://ja.aliexpress.com/
  ・L293D モータードライブシールドデュアル arduino
    ¥192-
  ・マイクロサーボ9g SG90サーボ
    ¥200-
  ・DCモーター
    ¥40-
  ・ステッピングモーター 28BYJ-48
    ¥150-
  ※お店により価格、送料は違います。

 秋月電子通商
  ・ユニポーラ ステッピングモーター 28BYJ-48
    https://akizukidenshi.com/catalog/g/gP-13256/
    ¥250-
  ・DCモーター FA-130RA-2270
    https://akizukidenshi.com/catalog/g/gP-06437/
    ¥100-
  ・DCモーター FA-130RA-2270L(リード線付き)
    https://akizukidenshi.com/catalog/g/gP-09169/
    ¥120-
  ・マイクロサーボ9g SG-90
    https://akizukidenshi.com/catalog/g/gM-08761/
    ¥400-
  ・マイクロサーボ SG92R
    https://akizukidenshi.com/catalog/g/gM-08914/
    ¥500-

このシールドはV1.x製品ですが、格安で手に入り、
車や戦車など模型の複数モーター制御が容易になります。

このシールドに関する情報やスケッチについて、
Arduino の公式ページの PROJECT HUB で紹介されています。
"ArduinoL293Dモータードライバーシールドチュートリアル" ページを
  https://create.arduino.cc/projecthub/electropeak/arduino-l293d-motor-driver-shield-tutorial-c1ac9b
ぜひ、参考にされて下さい。

では、私なりに、
それぞれのモーターを制御するスケッチをしてみます。

DCモーター、ステッピングモーターのスケッチには、
"Adafruit Motor Shield library" ライブラリが必要です。

メニュー「スケッチ」→「ライブラリをインクルード」
  →「ライブラリ管理」 を選択します。

ライブラリのインストール1
ライブラリのインストール1

表示された、ライブラリマネージャ画面の検索欄に、
 "AF_motor" 
と入力し、表示された一覧から
 "Adafruit Motor Shield library"
の、最新バージョンを選択し、「インストール」をクリックします。
※私のインストールバージョンは、1.0.1でした。

ライブラリのインストール2
ライブラリのインストール2
ライブラリのインストール3
ライブラリのインストール3

サーボモーターのスケッチには、
"Servo" ライブラリが必要ですが、インストール済みだと思います。
もし、インストールされていない場合は、
"Adafruit Motor Shield library" ライブラリと同じ操作で、
インストールします。
※検索欄への入力は、"Servo" で検索できます。
 私のインストールバージョンは、1.1.7でした。

1.DCモーター(FA-130RA)を接続してみます。

回路は図の通りです。
   この回路図の作図には fritzing を利用させて頂いております。
   https://fritzing.org/home/

DCモーターの配線
DCモーターの配線

スケッチです。

// DCモーター制御

// AFMotorライブラリインクルード
#include <AFMotor.h>

// DCモータオブジェクト生成(motor端子1を使用)
AF_DCMotor motor1(1, MOTOR12_64KHZ); // 1~4

void setup() {
  // put your setup code here, to run once:
  // モータースピード設定
  motor1.setSpeed(200);
}

void loop() {
  // put your main code here, to run repeatedly:
  // 正転
  motor1.run(FORWARD);       
  delay(1000);
  // 反転 
  motor1.run(BACKWARD);      
  delay(1000); 
  // 解放 
  motor1.run(RELEASE);       
  delay(1000); 
}

検証し、マイコンボードに書き込み実行してみます。

検証とマイコンボードへの書き込み
検証とマイコンボードへの書き込み

正転、反転を繰り返します。

DCモーターの実行確認
DCモーターの実行確認

2.ステッピングモーター(28BYJ-48)を接続してみます。

回路は図の通りです。

テッピングモーターの配線
ステッピングモーターの配線
ステッピングモーターの配線色
ステッピングモーターの配線色

スケッチです。

// ステッピングモーター制御

// AFMotorライブラリインクルード
#include <AFMotor.h>

// ステッピングモーターオブジェクト生成
// (ステッピングモーター端子2を使用)
AF_Stepper smotor2(48, 2);   // 1, 2

void setup() {
  // put your setup code here, to run once:
  // スピード設定
  smotor2.setSpeed(200);
}

void loop() {
  // put your main code here, to run repeatedly:
  // 正転、反転、SINGLEモード(1コイル)
  smotor2.step(1, FORWARD, SINGLE);
//  smotor2.step(1, BACKWARD, SINGLE);

  // 正転、反転、DOUBLEモード(2コイル)
//  smotor2.step(1, FORWARD, DOUBLE);
//  smotor2.step(1, BACKWARD, DOUBLE);

  // 正転、反転、INTERLEAVEモード
//  smotor2.step(1, FORWARD, INTERLEAVE);
//  smotor2.step(1, BACKWARD, INTERLEAVE);

  // 正転、反転、MICROSTEPモード
//  smotor2.step(1, FORWARD, MICROSTEP);
//  smotor2.step(1, BACKWARD, MICROSTEP);

  // 解放
//  smotor2.release();
}

検証し、マイコンボードに書き込み実行してみます。

検証とマイコンボードへの書き込み
検証とマイコンボードへの書き込み

スピード200で、Singleモードで正転を続けます。

ステッピングモーターの実行確認
ステッピングモーターの実行確認

3.マイクロサーボ(SG92R)を接続してみます。

回路は図の通りです。

サーボモーターの配線
サーボモーターの配線

スケッチです。

// サーボモーター制御

// Servoライブラリインクルード
#include <Servo.h> 

// サーボモーターオブジェクト生成
Servo servo1;
// 角度設定用変数宣言
int val = 0;

void setup() {
  // put your setup code here, to run once:
  // サーボモーター設定(サーボ端子1を使用)
  servo1.attach(10);    // servo1:10, servo2:9
}

void loop() {
  // put your main code here, to run repeatedly:
  // サーボモーターへ角度指示
  servo1.write(val);               
  delay(500);
  // 次の角度を生成
  val += 10;
  if( val >= 180 ){
    val = 0;        
  }
}

検証し、マイコンボードに書き込み実行してみます。

検証とマイコンボードへの書き込み
検証とマイコンボードへの書き込み

0~180度へ10度毎に回転を繰り返します。

サーボモーターの実行確認
サーボモーターの実行確認

簡単な各モーター使用を掲載しています。
"DCモーターの回転を制御してみる"
        https://shinog.jp/computer/arduino/dc%e3%83%a2%e3%83%bc%e3%82%bf%e3%83%bc%e3%81%ae%e5%9b%9e%e8%bb%a2%e3%82%92%e5%88%b6%e5%be%a1%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/

"マイクロサーボを使ってみる"
  https://shinog.jp/computer/arduino/%e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%b5%e3%83%bc%e3%83%9c%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/

"ステッピングモーターを使ってみる"
  https://shinog.jp/computer/arduino/%e3%82%b9%e3%83%86%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%83%a2%e3%83%bc%e3%82%bf%e3%83%bc%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/