Arduino
PR

【Arduino入門】はじめてのモータ制御!モータドライバの使い方を解説!

blog_admin
記事内に商品プロモーションを含む場合があります

ArduinoでLチカはできた!
次は、動くものを作りたいけど、Arduinoでモータをコントロールする方法がわからない(;;)
そのような方は、ぜひ、この記事を参考にしてください!!

今回の記事では、Arduinoで小型のモータをコントロールする方法を解説します!
実は、Arduinoだけでは、パワーが足りなくて、モータを回すことはできないのですが、モータドライバというパーツを使うことで、Arduinoでモータを自由自在にコントロールできるようになります!

今回の記事で解説すること
  • モータドライバの役割
  • モータドライバを使った回路の作り方
  • モータドライバを使ってモータをコントロールするプログラム
スポンサーリンク

解説動画

今回の記事はこちらの動画を解説したものです。

Arduinoでモータをコントロールするにはモータドライバが必要!

モータを回す方法として、真っ先に思いつくのは下の図のように電池をつなぐことだと思います。
ですが、これではArduinoでコントロールすることはできません。。。

それでは、LEDを光らせた時と同じように、下の図のように、電池の代わりにArduinoをつなげばいいのではないか!?
と思いますよね!!
実は、この方法では、ほとんどのモータは回りません(T_T)
その理由は、Arduinoの穴(ポート)から出力できる電気の量(電流の量)が足りなくて、モータを回すことができないんです!
※LEDを光らせるのに必要な電気の量の何倍、何十倍、何百倍、、、も必要なんです!(モータの大きさによる)

それでは、どうやってモータを回すかというと、、、
下の図のように、Arduinoとモータの間にパーツを入れて、Arduinoからは「回して!」や「止めて!」という少ない電気でできる指示だけを送るようにして、モータを回す大きな電気は電池から直接モータに与えるようにします!

こんな都合のいいパーツが本当にあるのか・・・?
あるんです!!
それが、このモータドライバです!!

モータドライバには、小さいモータ用、大きなモータ用、1つのモータ用、複数のモータ用など、たくさんの種類があります!

モータドライバの使い方

ほとんどのモータドライバには、下の図のように、電池をつなぐところ、モータをつなぐところの他に、制御信号(A、B)を入れるところがあります。

この制御信号のところに入れる信号で、モータの動きをコントロールします。
AにH(HIGH)を入れて、BにL(LOW)を入れると、モータは正転します。
逆に、AにL(LOW)を入れて、BにH(HIGH)を入れると、モータは逆転します。
ここで使っている、HIGHやLOWは、実はArduinoのLチカプログラム(Blink)の「digitalWrite」ですでに使っていたものです!

digitalWrite(9,HIGH);
delay(1000);
digitalWrite(9,LOW);
delay(1000);

なので、2本の線を用意して、Arduinoの2つのポートとモータドライバの制御信号A、Bのピンをつないであげれば、digitalWriteを使ってHIGHやLOWの信号をモータドライバに送ることができます!

モータの動きは上の図のように4パターンあります。

  1. 正転(回路次第で時計回りか反時計回りか決まる)
  2. 逆転(正転とは反対の方向に回転する)
  3. ストップ(自転車をこぐのをやめてシャーっと進む感じ)
  4. ブレーキ(自転車のハンドルのブレーキをギュッと握って停止する感じ)

ちなみに、ストップとブレーキの動作の違いはこんな感じです!

モータドライバを使った回路の作り方

回路を作ってみましょう!

使用するものリスト

使用するものはこちらです!

機材・パーツ個数備考参考URL
ブレッドボード1 秋月電子通商
通販コード
P-05294
電池BOX1単3 x 4本秋月電子通商
通販コード
P-02678
ジャンパー線セット1オスーオス秋月電子通商
通販コード
P-00288
ジャンパー線3オスーメス秋月電子通商
通販コード
C-08932
シールドクリップ
(みのむしクリップ)
1 秋月電子通商
通販コード
C-04351
タクトスイッチ1 秋月電子通商
通販コード
P-03647
抵抗 10kΩ1 秋月電子通商
通販コード
R-25103
モータドライバ
(Maker Drive)
1 秋月電子通商
通販コード
M-16281
Arduino Uno1 秋月電子通商
通販コード
M-07385
ツインモータギヤボックス1 Amazon
ナロータイヤセット1 Amazon
USBケーブル1Type-Aオス ー Type-Bオス秋月電子通商
通販コード
C-07605
パソコン1  

モータドライバを使った回路を作る

回路図はこちら↓です!
慣れている人は、これを見ながら作れると思いますが、回路図に慣れていない人は、さらに下にある配線図を参考にしながら回路を作ってみてください!
回路を作るときは、特に電池BOXのプラスとマイナスをつなぐところを間違えないように気をつけてください!
一発で壊れる可能性がありますし、異常に発熱して、火傷するかもしれないので、プラスとマイナスはいつでも気をつけておいていいと思います!

モータとモータドライバをつなぐところは、下の図のようにシールドクリップを切って使うことをオススメします!
はんだ付けができる人は、はんだ付けをしてもいいと思います(^^)

モータをコントロールするプログラム
その1: 正転と停止の繰り返し

プログラムを書いていきましょう!

プログラムのポイント

やりたいこと
  • スタートスイッチを押す前はモータにストップ信号を送っておく
    • 電源が入ったときに勝手に動き出したら危ないので、自分できちんとストップ信号を送ることで安心、安全なシステムになる
  • スタートスイッチを押すと下の動作を繰り返す
    1. モータを1秒間正転する
    2. モータを1秒間ストップする
回路の情報
  • モータ制御信号A: 5番
  • モータ制御信号B: 4番
  • スイッチ: 8番

ソースコード

ソースコード全文です。
動画でも説明していますが、スケッチ例のBlinkをベースにコピぺしながら作ると楽ちんです(^^)

正転するためには、制御信号AにつながっているポートをHIGHにして、BにつながっているポートをLOWにするのがポイントです!

1void setup() {
2  //ピンの出力(Output)or入力(Input)設定
3  pinMode(5, OUTPUT);  //モータ制御信号A
4  pinMode(4, OUTPUT);  //モータ制御信号B
5  pinMode(8, INPUT);  //スイッチ
6
7  //安全のためにストップ信号を送っておく
8  digitalWrite(5, HIGH);  //A
9  digitalWrite(4, HIGH);  //B
10
11  //スタートボタンを押されるのを待つ
12  while(digitalRead(8)==0);
13}
14
15void loop() {
16  //正転
17  digitalWrite(5, HIGH);  //A
18  digitalWrite(4, LOW);  //B
19  delay(1000);  //1秒待つ
20
21  //ストップ
22  digitalWrite(5, HIGH);  //A
23  digitalWrite(4, HIGH);  //B
24  delay(1000);  //1秒待つ
25}

動作確認

プログラムをArduinoに書き込んで動作確認をしましょう!
プログラムを書き込んだあとに、電池BOXに電池を入れるようにしたほうが安全です!
Arduinoから何も信号が出ていない状態で、モータドライバに電源が入ると、もしかすると勝手にモータが回り始めてしまうかもしれないですからね(^^;)
こんな感じで動くと思います!

モータをコントロールするプログラム
その2: 正転と逆転の繰り返し

次は、逆転も入れてみましょう!
プログラムのポイントとソースコードを書いておきますので参考にしてください!

プログラムのポイント

やりたいこと
  • スタートスイッチを押す前はモータにストップ信号を送っておく
  • スタートスイッチを押すと下の動作を繰り返す
    1. モータを1秒間正転する
    2. モータを1秒間ストップする
    3. モータを1秒間逆転する
    4. モータを1秒間ストップする
回路の情報
  • モータ制御信号A: 5番
  • モータ制御信号B: 4番
  • スイッチ: 8番

ソースコード

逆転するためには、正転とは逆に、制御信号AにつながっているポートをLOWにして、BにつながっているポートをHIGHにします。

1void setup() {
2  //ピンの出力(Output)or入力(Input)設定
3  pinMode(5, OUTPUT);  //モータ制御信号A
4  pinMode(4, OUTPUT);  //モータ制御信号B
5  pinMode(8, INPUT);  //スイッチ
6
7  //安全のためにストップ信号を送っておく
8  digitalWrite(5, HIGH);  //A
9  digitalWrite(4, HIGH);  //B
10
11  //スタートボタンを押されるのを待つ
12  while(digitalRead(8)==0);
13}
14
15void loop() {
16  //正転
17  digitalWrite(5, HIGH);  //A
18  digitalWrite(4, LOW);  //B
19  delay(1000);  //1秒待つ
20
21  //ストップ
22  digitalWrite(5, HIGH);  //A
23  digitalWrite(4, HIGH);  //B
24  delay(1000);  //1秒待つ
25
26  //逆転
27  digitalWrite(5, LOW);  //A
28  digitalWrite(4, HIGH);  //B
29  delay(1000);  //1秒待つ
30
31  //ストップ
32  digitalWrite(5, HIGH);  //A
33  digitalWrite(4, HIGH);  //B
34  delay(1000);  //1秒待つ
35}

動作確認

こんな感じで動くと思います!

まとめ: 【Arduino入門】はじめてのモータ制御!モータドライバの使い方を解説!

はじめて動くものを作る人に向けて、モータドライバの使い方を解説しました。
プログラムを見て気づいた人も多いと思いますが、構造はLチカのプログラムのほとんど同じですよね!
以前、申し上げた「Lチカを制するものはマイコンを制する!」をちょっと実感したいただけたのではないでしょうか(^^)

今回の記事で解説したこと
  • モータドライバの役割
    • マイコンのポートから出せる電気の量は小さいのでモータを回すにはパワーが足りない
    • モータドライバを通して電池から直接モータに電気を与える
    • マイコンは「正転」や「逆転」、「停止」などの指示を送る
      ※指示は少ない電気で送ることができる
  • モータドライバを使った回路の作り方
  • モータドライバを使ってモータをコントロールするプログラム

最後まで読んでいただきありがとうございました!
以上、CHAでした!

スポンサーリンク
ABOUT ME
CHA
「勉強に自由を!」をスローガンに、学校に限らず、好きな時に、好きな場所で、好きなことをYouTubeで勉強できるようになればいいなと思って授業動画を作っています!
記事URLをコピーしました