さあArduinoでモーターを回してみましょう!と簡単にいかないのがマイコンです。結論から言うとモータードライバというものが必要なんです。
モーターの種類
モーターと言ってもいろいろな種類があります。電子工作でよく使われるのが次の3つです。
- サーボモーター(回転角を指定)
- DCモーター(ぐるぐる回転させる)
- ステッピングモーター(よく知らん)
通常、模型などのプロペラやタイヤを回すのに使われているのがDCモーターです。単三電池2本で動くやつは100円くらいで手に入ります。サーボモーターは右に向けたり左に向けたりするような回転角を指定して回すのに使います。
鉄道模型で使われているのはDCモーターです。んじゃArduinoの出力は5Vだし直接つないでもいけそうですよね?結論はダメです。シンプルに鉄道模型の電圧は9V~12Vなのでまあ無理そうなのが分かります。でもダメな理由は電圧じゃなくて電流なんです。鉄道模型の模型のモーターはフル加速ハイスピード運転とかすると100mA以上の電流が流れます。Arduinoは1つのピンで最大で20mA。はい終了。
モータードライバの出番
そこで登場するのがモータードライバです。通常は電池とモーターをコードでつなぐだけでモーターは回ります↓

その途中にモータードライバという中継地点を入れてマイコン(Arduinoやmicro:bit)から「動け」「止まれ」といった命令を出すようなシステムにします↓

Arduinoは命令を出すだけなのでモーターを回転させるための電圧や電流は考えなくてもよくなります。実際にL293Dというモータードライバを例に配線するとこんな感じになります↓

ちなみにプログラムはこれ↓
void setup()
{
pinMode(3, OUTPUT); //3番ピン出力
pinMode(5, OUTPUT); //5番ピン出力
pinMode(10, OUTPUT); //10番ピン出力
}
void loop()
{
digitalWrite(10, HIGH);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
delay(5000); // 5秒待つ
digitalWrite(3, LOW);
digitalWrite(5, LOW);
delay(3000); // 3秒待つ
}
ブレッドボードに乗っかている黒いチップがモータードライバL293Dです。にしても配線がちょっと複雑でぜんぜん直感的じゃないし実際に導入するには半田付けが必要になりそう。ん~
モータードライバモジュール
んで完成品の登場。モータードライバモジュールという便利なものが売られています。

このモジュールはL9110Sというチップが乗っていて電圧2.5V~12V、最大電流800mAに対応。上の写真の左側がモーターへの出力(A2本、B2本)、右側のVCC、GNDがモーター電源入力(2.5V~12V)で、その他はArduinoとジャンパー線で接続する部分です。GNDはArduinoにもつなぎます。このモジュールで2つのモーターを制御できます。しかも1個200円以下。次回以降はこのモジュールを使って解説していきます。

また2Aまで対応するL298Nのチップが乗ったモジュールもあります。

各性能はチップに依存するのできちんと対応電圧と最大電流を確かめてから購入してください。自分の場合はL9110Sで十分な環境です。しかもAliExpressで購入したので4個入り送料込みで300円くらいでした。やすい。

まとめ
とりあえずArduinoでDCモーターを回すにはモータードライバという中継地点が必要なのが分かったと思います。次回、モータードライバモジュール(L9110S)を使って実際にモーターを回してみましょう。