みなさん,こんにちは
おかしょです.
前回はブレッドボードを使って,モータを回転させるということをやりました.
LEDの時も最初はブレッドボードを使ってから,Arduinoで制御をしました.
なので,今回もブレッドボードの次はArduinoでモータを制御してみます.
今回の記事を読むと,以下のようなことがわかる・できるようになります.
- Arduinoでモーターを制御する方法
- モ―タードライバの使い方
- モータードライバを使った電子回路の組み方
この記事を読む前に
この記事では電子回路をブレッドボードで組んでいます.
ブレッドボードの使い方がわからない方は以下を
モーターを使うのが初めてという方は以下を先に読んで,練習をしてから読むようにしてください.
必要なもの
今回,Arduinoでモータを制御するために必要なものは以下となります.
- Arduino
- USBケーブル(プログラム書き込み用)
- モーター(FA-130RA)
- コンデンサ(0.01μF)
- モータードライバー(TA7391P)
- 電池 (単三電池×2)
- ブレッドボード
- ジャンパー線×9本
さて,ひとつずつ見ていきましょう.
ArduinoとUSBケーブル
まず,上の二つは絶対に必要です.Arduinoでモーターを制御するのですから,Arduinoがないと始まりません.また,プログラムを書きこむためにはArduinoをパソコンと接続しなければならないので,USBケーブルも絶対に必要になります.
モーター
次に,モーターです.今回使用するモーターはDCモーターと呼ばれるものを使います.DCモータの簡単な説明は前回の記事にあるので,そちらを参照してください.
コンデンサ(0.01µF)
前回の記事で少し書きましたがDCモータは構造上,電気的なノイズが入ってしまいます.その対策として,コンデンサを接続します.この時,接続するコンデンサの容量によって除去できるノイズの周期が変わります.
今回はモーターを回転させるだけなので,必ず必要というわけではありませんが,今後ロボットを作る予定の方は持っていて損はないと思います.
モータードライバー
そして,今回新たに使うことになるモータードライバです.
これがないと,モーターの回転数などを制御できないので,必ず準備してください.
モータードライバはモータごとに対応しているものが異なるので,購入する際は対応しているかどうかを確認してから購入手続きをするようにしてください.今回使用したモーターのFA-130RAに対応したモータドライバはTA7291Pになるので参考にしてください.
このモータードライバーの使用方法は後で詳細に説明します.
電池
そして,今回は電池が必要となります.LEDの時はArduinoから電源を供給していましたが,モーターの場合はArduinoから電源を供給しても回転しない,もしくは少ししか回転しないです.これは,Arduinoから出る信号だけでは,モータを回転させるだけの電力が供給できないのが原因です.
モータを回転させるには,適切な電力が必要です.
電力とは電圧と電流の掛け算で求められる値です.LEDの場合は5 mA程度で点灯させることができます.Arduinoが出力できる電流は40 mAほどなので,LEDを点灯させるのはArduinoから供給される電力だけで十分でした.
しかし,モーターは大きな電力を必要とします.今回使用するモータの場合は200 mA程度が必要となります.そのため,Arduinoから供給される電力だけでは制御することができません.そこで,モーターに与える電力を別の電池で与えることによって,モーターが回転するのに十分な電力を用意します.この時の電池を外部電源と言います.
ブレッドボードとジャンパー線
そして最後の二つのブレッドボードとジャンパー線は回路を作るために使用します.こちらに関しても詳しいことは前回の記事で説明しているので,そちらを参照してください.
以上が今回使用するものになります.
モータードライバとは
上記でも説明しましたが,モータードライバはモータを制御する上では必ず必要になります.
この記事を読んでいる方の多くは,モータードライバの使い方がよくわからない方だと思うので,ここではモータードライバの使い方について詳しく説明したいと思います.
今回,私が使用したモータドライバの端子はデータシートより以下のようになっています.端子番号はPのものを使用しています.
上の表のVccはロジック側電源端子と言い,マイコンなどで制御を行う場合はマイコンの電圧を出力する端子と接続します.マイコンを使わない場合は電源の+側に接続します.今回は5v端子と接続しました.
次にVsは先ほど説明したモータ用に用意した電源(+側)と接続します.
VrefはVsからモータに流す電圧を決定する端子で,PWMで決定するためArduinoのPWM出力が可能なピンと接続します.
IN1, IN2はモータの動かし方を決定する端子で,HIGHまたはLOWを与える必要があります.
この時,どちらもLOWの場合はストップ,どちらもHIGHの場合はブレーキ,どちらかがHIGHの場合は正/逆回転します.
OUT1, 2はモータにそれぞれ接続します.モータのどちらに接続しても問題はありません.
回路を組む
それでは実際に回路を組んでみます.
回路は以下のように組みました.
上記の端子の説明表より,1番pinはGNDなので,ArduinoのGNDと外部電源のマイナス側と接続します.
2番と10番pinはOUT1, 2なのでモーターと接続します.この時,電気的ノイズの影響を抑えるためにコンデンサを並列に接続します.
3番と9番pinには何も役割がないため,なにも接続しません.
4番pinはどのくらいの電圧をモーターにかけるのかを決定するpinなので,ArduinoのPWM出力ができるpin,今回はA3番に接続しました.
5番と6番pinはIN1,2なのでそれぞれArduinoの2, 4番に接続しました.
7番pinは,今回はArduinoで制御するため,Arduinoの電圧を出力する5v端子と接続しました.
モーターを制御するプログラム
回路が組めたので,あとはプログラムを書き込み,Arduinoと接続するだけです.
まず,今回使用したプログラムを以下に示します.
void setup()
{
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
}
void loop()
{
while(1)
{
digitalWrite(2,LOW);
digitalWrite(4,HIGH);
analogWrite(3,0);
delay(1000);
analogWrite(3,100);
delay(1000);
analogWrite(3,200);
delay(1000);
digitalWrite(4,LOW);
digitalWrite(2,HIGH);
analogWrite(3,0);
delay(1000);
analogWrite(3,100);
delay(1000);
analogWrite(3,200);
delay(1000);
}
}
このプログラムによって1秒ごとに回転数が上がっていき,3秒たつと,反対回転で1秒ごとに回転数が上がっていきます.
まとめ
この記事では,Arduinoを使ってモーターの制御をする方法について解説しました.
上記のプログラムを書きこんで,思った通りにモーターを制御することができたでしょうか.
もしできなければ,回路を見直してみてください.モーターが回らない原因として,最も考えられるのは回路の組み間違いです.回路を組み間違えて電気を流してしまうと,モータードライバが故障する恐れがありますので十分に気を付けてください.
回路を見直しても回らない場合は,プログラムに問題があるかもしれないので上記のプログラムとよく見比べて確認してみてください.
どうしても回らない場合は,電子部品のどれかが故障している可能性があります.その場合は,故障しているかどうかを確認の上,部品を交換することをお勧めします.
この記事の通りにやっていただければ問題なくモータを回すことができたかと思います.
続けて読む
今回,モーターを回したということはロボットの動力を手に入れたことになります.これは非常に大きな一歩です.
このブログではロボットを自律させるために,センサからデータを取得したり,姿勢角を算出する方法なども解説しているので,ぜひ参考にしてみてください.
それでは,最後まで読んでいただきありがとうございました.
Twitterもやっているので,良ければフォローお願いします.
記事の更新情報や活動の進捗などをつぶやいています.
コメント
[…] Arduinoでモータを制御する方法センサーを使って姿勢角を算出する方法 […]
[…] 制御の仕方はこちらを参照してください. […]
[…] 回転させることができる電子部品と言えば,このブログでも使用したことがあるモーターです.ブレッドボードを使ってモーターを回転させるArduinoを使ってモーターを回転させるモータードライバーを使えば回転方向や回転数を制御できるので,モーターを3つ使えばあらゆる方向にセンサーを向けることができそうです. […]