Motorシールドは、L298というモータードライバICをArduinoUnoから扱いやすいように、周辺部品を含めて一つのボードにまとめたものです。ArduinoUnoにMotorシールドを接続することで、DCモーター2個またはステッピングモーター1個を制御できます。ここではDCモーターのスピードや回転方向の制御方法を見ていきます。公式ページはこちらです。Arduinoとかシールドについては「購入方法から内蔵LEDを点灯させるまで (Arduino)」を参照してみてください。
今回は公式ページと同じ製品をAmazonから購入して使用しました。動作確認はしていませんが、秋月電子通商で販売されているこちらの商品の方が安いようです。今度試してみようと思います。
写真のように、ArduinoUnoとMotorシールドを接続し、さらにMotorシールドにDCモーターの端子を接続し、マイナスドライバーで締めて固定します。
モーター用別電源を接続しない場合、ArduinoUno本体にUSB等から供給される5V電源がモーター駆動のためにも使用されます。そのため、制御するDCモーターの動作電圧がそれを上回る場合や、供給電力が不足してモーターの回りが悪い場合には、写真のように極性に注意してモーター用別電源を接続するとよいです。
ただし、このモーター用別電源の電圧が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.
マイコンに下記サンプルプログラムをコンパイルして書き込みます:
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);
}
リセットボタンを押して動作することを目視確認します。