Motorシールドを用いたDCモータの制御方法 (Arduino)
[履歴] [最終更新] (2016/06/03 21:58:09)

概要

Motorシールドは、L298というモータードライバICをArduinoUnoから扱いやすいように、周辺部品を含めて一つのボードにまとめたものです。ArduinoUnoにMotorシールドを接続することで、DCモーター2個またはステッピングモーター1個を制御できます。ここではDCモーターのスピードや回転方向の制御方法を見ていきます。公式ページはこちらです。Arduinoとかシールドについては「購入方法から内蔵LEDを点灯させるまで (Arduino)」を参照してみてください。

購入方法

今回は公式ページと同じ製品をAmazonから購入して使用しました。動作確認はしていませんが、秋月電子通商で販売されているこちらの商品の方が安いようです。今度試してみようと思います。

データシート

DCモーターを制御してみよう

用意するもの

  • DCモーター (x2)
  • ArduinoUno (x1)
  • Motorシールド (x1)
  • モーター用別電源 (なくてもいいです)
  • 工具 (マイナスドライバー、カッター)

手順1

Uploaded Image

写真のように、ArduinoUnoとMotorシールドを接続し、さらにMotorシールドにDCモーターの端子を接続し、マイナスドライバーで締めて固定します。

手順2

Uploaded Image

モーター用別電源を接続しない場合、ArduinoUno本体にUSB等から供給される5V電源がモーター駆動のためにも使用されます。そのため、制御するDCモーターの動作電圧がそれを上回る場合や、供給電力が不足してモーターの回りが悪い場合には、写真のように極性に注意してモーター用別電源を接続するとよいです。

Uploaded Image

Uploaded Image

ただし、このモーター用別電源の電圧が9Vを上回る場合、ArduinoUno本体に電気的にダメージを与える恐れがあります。その場合、公式ページに記載されているように、Motorシールド背面にある "Vin Connect" と記載されたはんだ付けされた部分を、カッター (またははんだごて) で電気的に切断してください。

If your motor require more than 9V we recommend that you separate the power lines of the shield and the Arduino board on which the shield is mounted. This is possible by cutting the "Vin Connect" jumper placed on the back side of the shield.

手順3

マイコンに下記サンプルプログラムをコンパイルして書き込みます:

void setup() {
  // モーターAの制御用ピン設定
  pinMode(12, OUTPUT); // 回転方向 (HIGH/LOW)
  pinMode(9, OUTPUT); // ブレーキ (HIGH/LOW)
  pinMode(3, OUTPUT); // PWMによるスピード制御 (0-255)

  // モーターBの制御用ピン設定
  pinMode(13, OUTPUT); // 回転方向 (HIGH/LOW)
  pinMode(8, OUTPUT); // ブレーキ (HIGH/LOW)
  pinMode(11, OUTPUT); // PWMによるスピード制御 (0-255)
}

void loop(){
  // モーターA: フルスピード正転
  digitalWrite(12, HIGH);
  digitalWrite(9, LOW);
  analogWrite(3, 255);
  // モーターB: フルスピード正転
  digitalWrite(13, HIGH);
  digitalWrite(8, LOW);
  analogWrite(11, 255);
  // 2秒間上記設定で回転
  delay(2000);

  // モーターA: フルスピード逆転
  digitalWrite(12, LOW);
  digitalWrite(9, LOW);
  analogWrite(3, 255);
  // モーターB: フルスピード逆転
  digitalWrite(13, LOW);
  digitalWrite(8, LOW);
  analogWrite(11, 255);
  // 2秒間上記設定で回転
  delay(2000);
}

手順4

Uploaded Image

リセットボタンを押して動作することを目視確認します。

関連ページ