注目キーワード
  1. Photoshop
  2. Python
  3. Raspberry Pi
  4. Arduino

Arduino電子工作-ドライバーを使ったDCモータ制御方法

ここでは「Arduino」と「モータードライバ」を使ってDCモーターを制御する方法を紹介します。

 

DCモーターってどうやって制御するんだろう

Arduinoで動かすにはどうしたらいいの?

モータードライバの配線は?

といった疑問を解決することができます。

 

それではさっそく制御方法を見てみましょう!

 

DCモータ、モータドライバを使うための準備・基礎

まずはArduinoでDCモータを制御するための準備として基礎知識を確認します。

制御用のマイコンには「Arduino MEGA2560 R3」の互換品を使用します。

 

この互換品は「Arduinoスターターキット」にて5000~6000円という安値で手に入るので、互換品のArduino MEGA2560を使用しました。

また、今回使う部品はすべてスターターキットに入っているので、これを買ってしまえば追加で買い足す必要がないのでオススメです。

 

DCモータ制御に必要なもの

続いて、DCモータ制御に必要なものをピックアップしてみます。

DCモータ制御に必要な部品等

Arduino MEGA2560 R3本体

DCモータ

ブレッドボード用電源モジュール

モータードライバー:L293D

パソコン(Arduino IDEインストール)

ジャンパー線

ブレッドボード

*すべてスターターキットに入っています。

 

DCモータは電子部品屋に行かなくとも、DCMカーマなどで普通に販売されているので複数のDCモータを制御したい場合は買い足しましょう。

 

ブレッドボード用電源モジュールについて

続いて、DCモーターを駆動させるのに必要な電源モジュールについてです。

 

小さなDCモーターは

Arduino MEGA2560 R3が扱うことのできるディジタル出力よりも大きな電力が必要

となります。

 

そのためArduino本体に直接モーターを接続すると、Arduino本体に負荷がかかり故障の原因になる恐れがあります。

そこで、電源モジュールを使うことで必要な電力を補います。

この電源モジュールを使うにも電源が必要なので、今回はスターターキット付属の12V電源を使いました。

 

モータドライバ:L293Dの各ピン

最後にモータドライバ:L293Dの使い方(各ピンの詳細)について触れておきます。

 

L293Dは

2つのモーターを別々に制御できるICチップ

で計16ピンあり、この内、左8ピンと右8ピンを使って2つまでモータが制御できます。

 

ピンの役割は以下です。

pin1 M1 PWM pin16 Battery +Ve
pin2 M1 direction 0/1 pin15 M2 direction 0/1
pin3 M1 +Ve pin14 M2 +Ve
pin4 GND pin13 GND
pin5 GND pin12 GND
pin6 M1 -Ve pin11 M2 -Ve
pin7 M1 direction 1/0 pin10 M2 direction 1/0
pin8 Battery +Ve pin9 M2 PWM

この内

pin3とpin6はDCモータ側の入出力

になり

pin8とpin4、5はモータドライバを動かすための電源

を接続します。

 

残りのピンは制御用となっています。

 

DCモータをArduinoで制御する

モータドライバやDCモーターの特徴を確認したところで、実際に配線・プログラムを行っていきましょう。

 

DCモータとArduinoの配線図

まずはArduino本体とモータドライバ、DCモータを配線していきます。

配線は

ピンの接続先

pin1 → digital pin5

pin2 → digital pin4

pin7 → ditigal pin3

へ接続しました。

DCmotor1

 

ここで少し問題が発生したので共有します…

上図のように配線しますが残念ながら動きませんでした。

 

なぜか原因を調べると

Arduino本体にDCモータを制御するための電力が不足していた

からでした。

 

そこで下図のように電源モジュールからArduinoに電源供給を行いました。

DCmotor2

※モータドライバとArduinoの黒・白ジャンパー線部分

 

電源供給のための配線は

黒線:モータドライバの「-側」とArduinoの「GNDピン」

赤線:モータドライバの「+側」とArduinoの「5Vピン」

と接続しています。

 

これで電源過不足の問題は解決されます。

 

ArduinoでDCモータを制御するプログラム

配線も終わったことで、いよいよArduino IDEを使ってプログラムを書いていきます。

今回は一例として簡単なモーター制御プログラムを記載しておきます。

#define ENABLE 5
#define DIRA 3
#define DIRB 4int i;void setup() {

pinMode(ENABLE,OUTPUT);

pinMode(DIRA,OUTPUT);

pinMode(DIRB,OUTPUT);

Serial.begin(9600);

}

void loop() {

digitalWrite(ENABLE,HIGH); // enable on

for (i=0;i<5;i++) {

digitalWrite(DIRA,HIGH); //one way

digitalWrite(DIRB,LOW); delay(500);

digitalWrite(DIRA,LOW); //reverse

digitalWrite(DIRB,HIGH); delay(500);

}

digitalWrite(ENABLE,LOW); // disable

delay(2000);

}

 

あとは各自プログラムを書き換えれば、回転速度の制御などが可能となります。

2つもモーターを同時制御するのも面白いと思うので是非挑戦してみてください。

 

以上Arduinoを使ったDCモーター制御方法でした。

 

また当サイトでは、下記記事のような「Arduino」を使った様々な電子工作・電子部品を使った制御方法を紹介しています。

Arduino電子工作-LCDディスプレイ表示方法と使い方解説・まとめ

もっとマイコン制御などを勉強したい方は、こちらも是非ご覧ください。

 

お疲れさまでした。

dcmotor-control-top
学びに関する情報をチェック!